官方文档:
pathlib — 面向对象的文件系统路径 — Python 3.13.2 文档
附带一些比较全的使用说明:
Python路径操作模块pathlib,看这篇就够了! - 知乎

pathlib 模块使用手册

pathlib 是Python 3.4+ 引入的面向对象的文件系统路径操作库,替代传统的 os.path 和 os 模块的部分功能,提供更简洁直观的API。


目录

  1. 基础用法
  2. 路径操作
  3. 文件读写
  4. 目录操作
  5. 通配符与模式匹配
  6. 路径属性与检测
  7. 高级操作
  8. 注意事项

1. 基础用法

导入与创建路径对象

1
2
3
4
5
6
7
8
9
10
11
from pathlib import Path

# 创建当前目录的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 # Path('/data/subdir')

# 获取文件名(含后缀)
name = p.name # 'file.txt'

# 获取文件名(不含后缀)
stem = p.stem # 'file'

# 获取后缀
suffix = p.suffix # '.txt'

# 组合父目录和新文件名
new_path = p.with_name('new.txt') # Path('/data/subdir/new.txt')

# 修改后缀
new_p = p.with_suffix('.csv') # Path('/data/subdir/file.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()

# 创建多级目录(类似 mkdir -p)
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
# 匹配当前目录下的.txt文件
for txt_file in Path('.').glob('*.txt'):
print(txt_file)

# 递归匹配所有子目录中的.py文件
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() # True/False

# 是否为文件/目录
is_file = p.is_file() # True/False
is_dir = p.is_dir() # True/False

# 获取文件大小(字节)
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. 注意事项

  1. 路径类型
    Windows使用WindowsPath,POSIX系统使用PosixPath,可通过PurePath进行跨平台抽象操作。

  2. 字符串转换
    需要字符串路径时,使用 str(p) 或 p.as_posix()(强制使用 / 分隔符)。

  3. 异常处理
    操作文件时建议捕获 FileNotFoundErrorPermissionError 等异常。

  4. 性能
    glob 和 rglob 在大型目录树中可能较慢,建议结合生成器使用。


通过 pathlib,开发者可以用更简洁的面向对象语法处理文件路径,减少字符串拼接错误,提升代码可读性和跨平台兼容性。