os模块示例
os 是 Python 的标准库模块之一,全称为 "Operating System",它提供了与操作系统交互的接口,允许你通过 Python 代码执行文件/目录操作、环境变量管理、进程控制等系统级任务。os 模块的功能非常广泛,是处理文件系统、运行外部命令、获取系统信息等场景的核心工具。
1. 主要功能分类
(1) 文件/目录操作
-
创建/删除目录:
import os os.mkdir("new_dir") # 创建单级目录 os.makedirs("a/b/c") # 递归创建多级目录 os.rmdir("empty_dir") # 删除空目录 os.removedirs("a/b/c") # 递归删除目录(仅当目录为空时) -
文件操作:
os.rename("old.txt", "new.txt") # 重命名文件 os.remove("file.txt") # 删除文件 os.replace("file.txt", "backup.txt") # 覆盖重命名(Python 3.3+) -
路径处理(与
os.path结合使用):os.getcwd() # 获取当前工作目录 os.chdir("/home/user") # 切换工作目录 os.listdir(".") # 列出目录内容
(2) 环境变量管理
- 获取或设置环境变量:
os.environ["PATH"] # 获取环境变量 PATH 的值 os.environ["MY_VAR"] = "value" # 设置环境变量
(3) 进程控制
-
运行外部命令:
os.system("ls -l") # 在终端执行命令(返回退出状态码) os.popen("date").read() # 执行命令并获取输出(返回文件对象) -
更高级的进程管理(推荐用
subprocess模块替代):import subprocess subprocess.run(["ls", "-l"], check=True) # 更安全的替代方案 -
获取进程信息:
os.getpid() # 当前进程 ID os.getppid() # 父进程 ID
(4) 文件权限与属性
-
修改文件权限:
os.chmod("file.txt", 0o755) # 设置权限为 rwxr-xr-x -
获取文件信息:
os.stat("file.txt") # 返回文件状态(大小、修改时间等)
(5) 系统信息
-
获取系统相关常量:
os.name # 操作系统类型(如 'posix', 'nt', 'java') os.uname() # 系统详细信息(Linux/macOS) os.cpu_count()# CPU 核心数 -
路径分隔符:
os.sep # 路径分隔符(Windows: '\', Linux/macOS: '/') os.pathsep # 环境变量分隔符(Windows: ';', Linux/macOS: ':')
2. 常见用例示例
示例 1:批量重命名文件
import os
directory = "./photos"
for filename in os.listdir(directory):
if filename.endswith(".jpg"):
new_name = f"vacation_{filename}"
os.rename(
os.path.join(directory, filename),
os.path.join(directory, new_name)
)
示例 2:递归删除目录
import os
import shutil # 更安全的递归删除(替代 os.removedirs)
def delete_dir(path):
if os.path.exists(path):
shutil.rmtree(path) # 删除目录及其所有内容
print(f"Deleted: {path}")
else:
print("Directory does not exist.")
delete_dir("./temp")
示例 3:检查文件是否存在并读取
import os
file_path = "data.txt"
if os.path.exists(file_path):
if os.path.isfile(file_path):
with open(file_path, "r") as f:
print(f.read())
else:
print("File not found.")
3. 注意事项
-
跨平台兼容性:
- 使用
os.path.join()拼接路径,避免硬编码/或\。 - 优先使用
os.sep或os.path提供的方法处理路径。
- 使用
-
安全性:
- 避免直接使用
os.system()执行用户输入的命令(可能引发命令注入攻击),推荐用subprocess.run()。
- 避免直接使用
-
性能:
- 频繁的文件系统操作可能影响性能,考虑批量处理或缓存结果。
-
替代模块:
- 文件路径操作:推荐
pathlib(面向对象,更易读)。 - 进程管理:推荐
subprocess(更安全、功能更强大)。
- 文件路径操作:推荐
4. 总结
os 模块是 Python 中与操作系统交互的“瑞士军刀”,适合处理文件系统、环境变量、进程控制等底层任务。对于更复杂的场景(如路径操作),可以结合 os.path 或 pathlib 使用。如果是高级进程管理,建议优先选择 subprocess 模块。

浙公网安备 33010602011771号