python中pathlib模块的用法有哪些?

pathlib提供面向对象的路径操作,支持创建路径、拼接、访问组件、判断属性、读写文件、遍历目录、管理目录及获取文件信息,相比os.path更直观且跨平台兼容。

pathlib 是 Python 3.4+ 引入的用于处理文件路径的标准库模块,提供面向对象的方式操作路径,比传统的 os.path 更直观、更易读。以下是它的主要用法。

1. 创建路径对象

Path 是核心类,用来表示一个文件或目录路径。

  • 使用字符串创建:from pathlib import Path; p = Path('/home/user/documents')
  • 使用多个部分拼接:p = Path('/home') / 'user' / 'documents'
  • 获取当前工作目录:p = Path.cwd()
  • 获取用户主目录:p = Path.home()

2. 路径拼接与组合

使用斜杠 / 操作符安全地拼接路径,无需担心斜杠方向问题。

  • path = Path('data') / 'raw' / 'file.txt'
  • 支持与字符串混合:Path('data') / 'output.csv'

3. 访问路径的各个部分

可以轻松提取路径中的不同组成部分。

  • p.name:获取文件名(含扩展名),如 report.pdf
  • p.stem:获取文件名主体,如 report
  • p.suffix:获取扩展名,如 .pdf
  • p.parent:获取上级目录
  • p.parts:返回路径各部分组成的元组

4. 判断路径属性

检查路径是否存在以及其类型。

  • p.exists():路径是否存在
  • p.is_file():是否为文件
  • p.is_dir():是否为目录
  • p.is_symlink():是否为符号链接

5. 文件读写操作

可以直接对文件进行读写,无需打开关闭。

  • 读取文本:content = Path('hello.txt').read_text(encoding='utf-8')
  • 写入文本:Path('output.log').write_text('Hello!', encoding='utf-8')
  • 读取二进制:data = Path('image.png').read_bytes()

6. 遍历目录

提供了多种方式列出目录内容。

  • p.iterdir():遍历目录下所有条目(返回生成器)
  • p.glob("*.py"):匹配特定模式的文件,如所有 Python 文件
  • p.rglob("*.txt"):递归匹配所有子目录中的 .txt 文件

7. 创建和删除目录

可直接管理目录结构。

  • 创建单层目录:Path('logs').mkdir(exist_ok=True)
  • 创建多层目录:Path('a/b/c').mkdir(parents=True, exist_ok=True)
  • 删除空目录:Path('temp').rmdir()
  • 删除文件:Path('old.txt').unlink(missing_ok=True)

8. 获取文件信息

获取文件的元数据。

  • p.stat():返回 stat 结构,包含大小、权限、修改时间等
  • p.lstat():类似 stat,但不解析符号链接
  • 例如获取文件大小:p.stat().st_size
基本上就这些。pathlib 让路径操作变得更简洁、跨平台兼容性更好,推荐在新项目中优先使用它替代 os.path 和 glob 模块。