os 是 Python 标准库中最常用的模块之一,它的职责是和操作系统打交道:读写文件路径、创建删除文件和目录、读取环境变量、执行系统命令……几乎每个稍成规模的脚本都会用到它。本文用几分钟带你快速上手。
一、路径处理:os.path
os.path 是 os 里最常用的一组函数,专门处理文件路径。其中 join 用来拼接路径,会自动处理不同平台的路径分隔符,是跨平台开发的第一条铁律。
import os
path = os.path.join("code", "demo.py")
print(path) # code/demo.py
print(os.path.dirname(path)) # code
print(os.path.basename(path)) # demo.py
print(os.path.splitext(path)) # ('code/demo', '.py')
print(os.path.exists(path)) # 是否存在
除了上面这些,os.path 还有 isfile / isdir 判断类型、abspath 转绝对路径、getsize 取文件大小等。记住一句话:只要和路径有关,先去 os.path 里找。
二、目录与文件操作
os 还提供了一套操作目录和文件的方法,相当于把命令行里的 cd、mkdir、rm 搬进了 Python。
os.getcwd() # 当前工作目录
os.chdir("/tmp") # 切换目录
os.makedirs("a/b/c", exist_ok=True) # 递归创建目录
print(os.listdir(".")) # 列出当前目录
os.rename("old.txt", "new.txt") # 重命名
os.remove("new.txt") # 删除文件
注意:remove 只能删文件,删空目录用 rmdir,删非空目录要借助 shutil.rmtree。
三、读取环境变量
print(os.environ) # 全部环境变量(字典)
home = os.getenv("HOME") # 取单个,没有则返回 None
os.environ 是一个字典,可以直接索引;但用 getenv 更安全,因为它遇到不存在的变量会返回 None 而不是抛异常。
四、执行系统命令
os 也能执行 shell 命令,但官方更推荐 subprocess 模块,功能更强也更安全。
os.system("echo hello") # 简单执行,返回退出码
# 推荐写法:
import subprocess
subprocess.run(["ping", "-c", "1", "baidu.com"])
五、几个实用小技巧
os.name 告诉你当前平台(Windows 是 nt,Linux/macOS 是 posix);os.sep 是当前平台的路径分隔符;os.linesep 是换行符。写跨平台代码时,永远用 os.path.join 拼路径,而不要手写 / 或 \。
总结
os 库是 Python 与操作系统之间的桥梁:路径找 os.path,文件和目录找 makedirs / listdir / rename,环境变量找 environ / getenv,执行命令优先 subprocess。把这四块吃透,日常脚本里 90% 的系统交互需求都能搞定。