官方文档:
pathlib — 面向对象的文件系统路径 — Python 3.13.2 文档
附带一些比较全的使用说明:
Python路径操作模块pathlib,看这篇就够了! - 知乎
pathlib
模块使用手册
pathlib
是Python 3.4+ 引入的面向对象的文件系统路径操作库,替代传统的 os.path
和 os
模块的部分功能,提供更简洁直观的API。
目录
- 基础用法
- 路径操作
- 文件读写
- 目录操作
- 通配符与模式匹配
- 路径属性与检测
- 高级操作
- 注意事项
1. 基础用法
导入与创建路径对象
1 2 3 4 5 6 7 8 9 10 11
| from pathlib import Path
p = Path()
p = Path('/usr/bin/python') p = Path('data/file.txt')
p = Path('data') / 'subdir' / 'file.txt'
|
2. 路径操作
路径分解与组合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| p = Path('/data/subdir/file.txt')
parent = p.parent
name = p.name
stem = p.stem
suffix = p.suffix
new_path = p.with_name('new.txt')
new_p = p.with_suffix('.csv')
|
3. 文件读写
读写文本/二进制文件
1 2 3 4 5 6 7 8 9 10 11
| content = p.read_text(encoding='utf-8')
p.write_text('Hello, Pathlib!', encoding='utf-8')
data = p.read_bytes()
p.write_bytes(b'Binary data')
|
使用 open
方法
1 2
| with p.open(mode='r', encoding='utf-8') as f: content = f.read()
|
4. 目录操作
创建与删除目录
1 2 3 4 5 6 7 8
| Path('new_dir').mkdir()
Path('parent/child').mkdir(parents=True, exist_ok=True)
Path('empty_dir').rmdir()
|
遍历目录
1 2 3 4 5 6 7
| for item in Path('.').iterdir(): print(item.name)
for file in Path('.').rglob('*.txt'): print(file)
|
5. 通配符与模式匹配
1 2 3 4 5 6 7
| for txt_file in Path('.').glob('*.txt'): print(txt_file)
for py_file in Path('.').rglob('*.py'): print(py_file)
|
6. 路径属性与检测
路径状态检查
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| p = Path('file.txt')
exists = p.exists()
is_file = p.is_file() is_dir = p.is_dir()
size = p.stat().st_size
mtime = p.stat().st_mtime
|
7. 高级操作
解析绝对路径与软链接
1 2 3 4 5
| abs_path = p.resolve()
is_symlink = p.is_symlink()
|
文件操作
1 2 3 4 5 6 7 8
| p.rename('new_name.txt')
p.replace('/target/path/new_name.txt')
p.unlink(missing_ok=True)
|
8. 注意事项
-
路径类型:
Windows使用WindowsPath
,POSIX系统使用PosixPath
,可通过PurePath
进行跨平台抽象操作。
-
字符串转换:
需要字符串路径时,使用 str(p)
或 p.as_posix()
(强制使用 /
分隔符)。
-
异常处理:
操作文件时建议捕获 FileNotFoundError
、PermissionError
等异常。
-
性能:
glob
和 rglob
在大型目录树中可能较慢,建议结合生成器使用。
通过 pathlib
,开发者可以用更简洁的面向对象语法处理文件路径,减少字符串拼接错误,提升代码可读性和跨平台兼容性。