Python 标准库之 os 模块
Python 的 os
模块提供了与操作系统进行交互的功能,是 Python 标准库中最常用的模块之一。它允许开发者访问和操作文件系统、环境变量、进程管理等底层操作系统功能,使代码能够在不同平台上保持一致的行为。下面将介绍 os
模块的核心功能和常用方法:
一、文件和目录操作
os
模块提供了创建、删除、重命名文件和目录的功能:
python
import os# 目录操作
os.mkdir("new_dir") # 创建单个目录
os.makedirs("a/b/c") # 递归创建多级目录
os.rmdir("empty_dir") # 删除空目录
os.removedirs("a/b/c") # 递归删除空目录(如果a/b/c为空,则依次删除c、b、a)# 文件操作
os.remove("file.txt") # 删除文件
os.rename("old.txt", "new.txt") # 重命名文件# 路径操作
current_dir = os.getcwd() # 获取当前工作目录
os.chdir("/path/to/dir") # 切换工作目录
parent_dir = os.path.dirname(current_dir) # 获取父目录# 检查路径是否存在或类型
exists = os.path.exists("/path/to/file") # 判断路径是否存在
is_file = os.path.isfile("/path/to/file") # 判断是否为文件
is_dir = os.path.isdir("/path/to/dir") # 判断是否为目录
二、路径处理(os.path
子模块)
os.path
提供了跨平台的路径处理功能,避免手动拼接路径导致的错误:
python
import os# 路径拼接(自动处理分隔符)
path = os.path.join("dir", "subdir", "file.txt") # 在Windows返回 "dir\\subdir\\file.txt",在Linux返回 "dir/subdir/file.txt"# 提取路径组件
dirname = os.path.dirname(path) # 返回 "dir/subdir"
basename = os.path.basename(path) # 返回 "file.txt"
root, ext = os.path.splitext(path) # 返回 ("dir/subdir/file", ".txt")# 绝对路径与相对路径
abs_path = os.path.abspath("file.txt") # 返回文件的绝对路径
rel_path = os.path.relpath("/a/b/c", "/a") # 返回 "b/c"# 检查文件修改时间
mtime = os.path.getmtime("file.txt") # 返回最后修改时间(时间戳)
三、环境变量操作
通过 os.environ
可以访问和修改环境变量:
python
import os# 获取环境变量
home_dir = os.environ.get("HOME") # 在Linux/macOS获取用户主目录
path = os.environ.get("PATH") # 获取系统路径变量# 设置环境变量(仅在当前进程有效)
os.environ["MY_VAR"] = "my_value" # 设置自定义环境变量
四、进程管理
os
模块提供了与进程相关的功能:
pytho
五、系统信息
获取操作系统相关信息:
python
import os# 获取操作系统类型
os_name = os.name # 返回 'posix' (Linux/macOS) 或 'nt' (Windows)
platform = os.uname() # 在UNIX系统返回系统信息元组# 其他系统功能
os.urandom(16) # 生成16字节的加密安全随机数据
六、示例:递归遍历目录
结合 os.walk()
和 os.path
可以高效遍历目录树:
python
import osfor root, dirs, files in os.walk("."): # 从当前目录开始递归遍历print(f"当前目录: {root}")print(f"子目录: {dirs}")print(f"文件: {files}")print("-" * 20)
七、注意事项
- 跨平台兼容性:部分功能(如
os.uname()
)仅在特定系统上可用,使用前需检查os.name
。 - 权限问题:文件操作可能因权限不足而失败,需捕获
PermissionError
。 - 路径分隔符:避免手动使用
/
或\
,而是用os.path.join()
拼接路径。 - 推荐替代模块:
- 文件路径处理:使用
pathlib
模块(Python 3.4+)。 - 执行外部命令:使用
subprocess
模块替代os.system()
。
- 文件路径处理:使用
总结
os
模块是 Python 与操作系统交互的基础工具,适用于文件系统操作、环境变量管理和进程控制。对于更高级的文件路径处理,推荐使用 pathlib
模块;对于复杂的命令执行,推荐使用 subprocess
模块。掌握这些模块能显著提升代码的可移植性和健壮性。