总体对比
| 功能 | pathlib.Path(推荐) |
os.path(传统方式) |
|---|---|---|
| 编程风格 | 面向对象 | 基于字符串 |
| 路径拼接 | 使用 / 运算符 |
使用 os.path.join() |
| 跨平台性 | 自动处理 Windows/Unix 差异 | 依赖字符串处理 |
| 文件操作 | 内置方法(如 .read_text()) |
需配合 open()、os |
| 可读性 | 更高 | 较低 |
| 引入版本 | Python 3.4+ | Python 早期版本 |
常用操作对比表
- 创建路径对象
| 操作 | pathlib | os.path |
|---|---|---|
| 创建路径 | p = Path("data/file.txt") |
字符串:p = "data/file.txt" |
- 路径拼接
| 操作 | pathlib | os.path |
|---|---|---|
| 拼接路径 | p = Path("data") / "file.txt" |
p = os.path.join("data", "file.txt") |
- 检查路径
| 操作 | pathlib | os.path |
|---|---|---|
| 是否存在 | p.exists() |
os.path.exists(p) |
| 是否文件 | p.is_file() |
os.path.isfile(p) |
| 是否目录 | p.is_dir() |
os.path.isdir(p) |
- 获取路径组成部分
| 操作 | pathlib | os.path |
|---|---|---|
| 文件名 | p.name |
os.path.basename(p) |
| 父目录 | p.parent |
os.path.dirname(p) |
| 后缀 | p.suffix |
os.path.splitext(p)[1] |
| 文件名(无后缀) | p.stem |
os.path.splitext(os.path.basename(p))[0] |
- 文件读写
| 操作 | pathlib | os.path |
|---|---|---|
| 读文本 | p.read_text() |
open(p).read() |
| 写文本 | p.write_text("hello") |
open(p, "w").write("hello") |
| 读字节 | p.read_bytes() |
open(p, "rb").read() |
- 目录操作
| 操作 | pathlib | os.path + os |
|---|---|---|
| 创建目录 | p.mkdir() |
os.mkdir(p) |
| 递归创建 | p.mkdir(parents=True) |
os.makedirs(p) |
| 遍历目录 | for f in p.iterdir(): |
for f in os.listdir(p): |
- 路径匹配(glob)
| 操作 | pathlib | os.path + glob |
|---|---|---|
| 匹配文件 | p.glob("*.txt") |
glob.glob("*.txt") |