Python pathlib 路径操作
学习pathlib · 难度:入门 · +10XP
Python pathlib 路径操作
在 Python 中,文件和目录路径的处理是日常编程中最常见的任务之一。pathlib 模块是 Python 3.4 引入的现代路径处理库,它提供了一种面向对象的方式来操作文件系统路径,替代了传统的 os.path 模块。
为什么要使用 pathlib?
与传统的 os.path 相比,pathlib 具有以下优势:
- 面向对象设计,代码更加直观易读
- 路径对象可以直接使用
/运算符拼接 - 跨平台兼容,自动处理 Windows 和 Linux 的路径分隔符差异
- 集成了文件读写、目录遍历等常用操作
Path 对象的创建
使用 Path 类创建路径对象十分简单:
from pathlib import Path
# 创建路径对象
p = Path('/usr/local/bin')
print(p) # /usr/local/bin
# 使用 / 运算符拼接路径
new_path = p / 'python3'
print(new_path) # /usr/local/bin/python3
# 获取当前工作目录
cwd = Path.cwd()
print(cwd)
# 获取用户主目录
home = Path.home()
print(home)
路径属性
Path 对象提供了丰富的属性来获取路径的各个部分:
from pathlib import Path
p = Path('/home/user/docs/report.pdf')
print(p.name) # report.pdf (文件名)
print(p.stem) # report (不带后缀的文件名)
print(p.suffix) # .pdf (文件后缀)
print(p.parent) # /home/user/docs (父目录)
print(p.parts) # ('/', 'home', 'user', 'docs', 'report.pdf')
print(p.anchor) # / (根目录)
常用操作方法
from pathlib import Path
p = Path('example.txt')
# 检查路径是否存在
if p.exists():
print('文件存在')
# 检查是否为文件或目录
p.is_file()
p.is_dir()
# 创建目录
Path('new_folder').mkdir(exist_ok=True)
# 创建多级目录
Path('a/b/c').mkdir(parents=True, exist_ok=True)
# 文件读写
content = Path('data.txt').read_text(encoding='utf-8')
Path('output.txt').write_text('Hello World', encoding='utf-8')
# 遍历目录
for file in Path('.').glob('*.py'):
print(file)
# 递归遍历
for file in Path('.').rglob('*.py'):
print(file)
路径操作对比表
| 操作 | os.path (旧方法) | pathlib (新方法) |
|---|---|---|
| 路径拼接 | os.path.join(a, b) | Path(a) / b |
| 获取文件名 | os.path.basename(p) | Path(p).name |
| 获取父目录 | os.path.dirname(p) | Path(p).parent |
| 获取后缀 | os.path.splitext(p)[1] | Path(p).suffix |
| 检查是否存在 | os.path.exists(p) | Path(p).exists() |