操作文件和目录
跨平台写 Python 脚本时,最常踩的坑就是硬编码路径分隔符、适配系统命令,或者不知道当前代码跑在哪——这时候 os 家族(含 os.path)、shutil、pathlib(Python 3.4+)就是你的救星!
这篇文章带你梳理 Python 中文件/目录操作的核心工具链,附安全提示和实用案例。
操作系统类型检测
先搞清楚脚本的运行环境,能帮你做针对性的适配(比如路径处理、终端调用)。
💡 常见标识对应系统:
posix:Linux、macOS、BSD 等 Unix-like 系统nt:Windows 系统
如果需要获取更详细的内核/主机信息(仅支持 Unix-like):
⚠️ 注意:Windows 上调用 os.uname() 会直接报错,务必加判断。
环境变量操作
所有系统环境变量都存储在类字典结构 os.environ 中,但它只能直接赋值,推荐用 .get() 避免 KeyError。
文件与目录操作
核心原则💡
永远不要手动拼接路径字符串(比如 '/Users/xxx' + 'test.txt'),不同系统的分隔符不一样(Windows 是 \,Unix-like 是 /),手动拼接会导致跨平台失效。
经典路径工具:os.path
虽然现代 Python 推荐用 pathlib,但 os.path 兼容性最好(Python 2.x/3.x 通用),很多老项目还在用:
现代路径工具:pathlib(Python 3.4+ 首选)
pathlib 用面向对象的方式处理路径,代码更简洁易读,完全可以替代 os.path:
目录操作
不管用 os 还是 pathlib,底层逻辑差不多,但语法有区别:
用 os 模块
用 pathlib
文件操作
用 os 模块
用 pathlib
高级文件操作
os/pathlib 能覆盖基础需求,但复制文件/递归删除/移动大目录这类复杂操作,建议用 shutil 模块(“shell utilities”的缩写)。
实用小技巧
1. 列出当前目录下的所有子目录
2. 递归查找文件
比如找所有含 log 的文件:
3. 计算目录总大小
总结
- 环境检测:用
os.name快速判断系统,Unix-like 可以加os.uname() - 路径处理:Python 3.4+ 首选
pathlib(面向对象、链式调用、/ 操作符),老项目兼容用os.path - 基础目录/文件操作:用
os或pathlib对应方法 - 复杂操作:用
shutil(复制、递归删除等) - 安全提示:
shutil.rmtree要加判断;生产环境不要打印完整os.environ;操作前尽量检查文件/目录是否存在

