Python3 OS
Python3 学习笔记 · 整理自菜鸟教程
一句话
os 模块让你用 Python 操作文件系统、目录、环境变量和进程,是跨平台处理路径与文件的核心工具。
要点
os提供与操作系统交互的接口,os.path专门处理路径(跨平台拼接、判断、拆分)。- 路径拼接永远用
os.path.join(),不要手动拼"/",否则 Windows 会出错。 - 常用操作:列目录、创建/删除目录、重命名、判断存在、获取文件大小、遍历目录树。
- 环境变量用
os.environ(类字典),os.getenv("KEY")读取时不存在返回None,更安全。 os.walk()递归遍历目录树,返回(当前目录, 子目录列表, 文件列表)。- 当前工作目录用
os.getcwd(),切换用os.chdir()。 - 想用更面向对象的路径写法,可了解
pathlib.Path(Python3.4+,推荐新代码)。
语法 / 常用方法
| 语法/方法 | 说明 | 示例 |
|---|---|---|
os.getcwd() |
获取当前工作目录 | os.getcwd() → '/Users/me' |
os.chdir(path) |
切换工作目录 | os.chdir("/tmp") |
os.listdir(path) |
列出目录下所有条目名 | os.listdir(".") |
os.mkdir(path) |
创建单层目录 | os.mkdir("demo") |
os.makedirs(path) |
递归创建多层目录 | os.makedirs("a/b/c") |
os.rmdir(path) |
删除空目录 | os.rmdir("demo") |
os.remove(path) |
删除文件 | os.remove("a.txt") |
os.rename(src, dst) |
重命名/移动 | os.rename("a.txt", "b.txt") |
os.path.join(a, *p) |
智能拼接路径 | os.path.join("a", "b") → a/b |
os.path.exists(p) |
路径是否存在 | os.path.exists("a.txt") |
os.path.isfile(p) |
是否是文件 | os.path.isfile("a.txt") |
os.path.isdir(p) |
是否是目录 | os.path.isdir("demo") |
os.path.getsize(p) |
文件字节大小 | os.path.getsize("a.txt") |
os.path.abspath(p) |
转绝对路径 | os.path.abspath("a.txt") |
os.path.basename(p) |
取文件名 | os.path.basename("/a/b.txt") → b.txt |
os.path.dirname(p) |
取目录部分 | os.path.dirname("/a/b.txt") → /a |
os.path.splitext(p) |
拆扩展名 | os.path.splitext("a.txt") → ('a', '.txt') |
os.walk(path) |
递归遍历目录树 | for root, dirs, files in os.walk(".") |
os.getenv(key) |
读环境变量 | os.getenv("HOME") |
os.environ |
环境变量字典 | os.environ["PATH"] |
os.rename() |
重命名/移动 | os.rename("old", "new") |
os.name |
系统标识 | 'posix' 或 'nt' |
代码示例
1 | |
易错点
- 手动拼路径:
"a" + "/" + "b"在 Windows 上不可移植,一律用os.path.join。 os.getenvvsos.environ:os.environ["X"]键不存在会抛KeyError;os.getenv("X")返回None。os.mkdir不建父目录:父目录不存在会报错,多层用os.makedirs。os.rmdir只能删空目录;有内容先用shutil.rmtree()。os.remove只能删文件,对目录用会报IsADirectoryError。- 相对路径依赖当前工作目录,脚本被别处调用时可能失效,用
os.path.abspath(__file__)定位脚本目录。