pathlib 面向对象路径操作
原文:pathlib 路径
一句话
pathlib 提供面向对象的文件系统路径操作,替代传统的字符串路径处理。
什么时候翻这页
- Agent 需要处理文件系统路径,如读取配置文件、日志文件等
- 工具调用中需要操作文件系统,如保存、读取或处理文件
- 需要跨平台处理路径,确保代码在不同操作系统上正常工作
- Agent 需要遍历目录结构,查找特定类型的文件
核心概念
- 纯路径(PurePath):不进行实际文件系统操作的路径类,包括
PurePath、PurePosixPath和PureWindowsPath - 具体路径(Path):继承自纯路径,增加了文件系统操作能力,包括
Path、PosixPath和WindowsPath - 路径操作:使用
/运算符拼接路径,支持路径解析和规范化 - 路径属性:提供
name、stem、suffix、parent、parts等属性访问路径的各个部分 - 文件系统操作:包括文件和目录的创建、读取、写入、删除、移动等操作
怎么做
-
基本使用:
from pathlib import Path # 创建路径对象 p = Path('.') home = Path.home() cwd = Path.cwd() # 路径拼接 config = Path('/etc') / 'config.ini' # 检查路径存在性 if config.exists(): print(f"配置文件存在: {config}") -
路径操作:
# 获取路径各部分 p = Path('/usr/local/bin/python') print(p.parts) # ('/', 'usr', 'local', 'bin', 'python') print(p.name) # 'python' print(p.stem) # 'python' print(p.suffix) # '' print(p.parent) # /usr/local/bin # 路径匹配 if p.match('*/bin/*'): print("路径包含 bin 目录") -
文件操作:
# 读取文件 with Path('file.txt').open() as f: content = f.read() # 写入文件 Path('output.txt').write_text('Hello, World!') # 读取二进制文件 data = Path('image.png').read_bytes() -
目录遍历:
# 列出目录内容 for item in Path('/path/to/dir').iterdir(): print(item) # 查找特定文件 for py_file in Path('/path/to/project').glob('**/*.py'): print(py_file) # 递归遍历目录 for root, dirs, files in Path('/path/to/dir').walk(): print(f"目录: {root}") print(f"子目录: {dirs}") print(f"文件: {files}")
命令 / API 速查
| 功能 | API 方法 |
|---|---|
| 创建路径 | Path(), PurePath() |
| 路径拼接 | / 运算符, joinpath() |
| 路径解析 | resolve(), absolute() |
| 路径属性 | name, stem, suffix, parent, parts |
| 检查路径 | exists(), is_dir(), is_file(), is_symlink() |
| 文件操作 | open(), read_text(), write_text(), read_bytes(), write_bytes() |
| 目录操作 | iterdir(), glob(), rglob(), walk() |
| 路径匹配 | match(), full_match() |
| 文件系统操作 | mkdir(), unlink(), rmdir(), rename(), replace() |
| 符号链接 | symlink_to(), readlink() |
| 权限操作 | chmod(), lchmod() |
与 Agent 开发的联系
- 工具调用中的文件处理:Agent 在调用工具时经常需要处理文件系统,如读取配置文件、保存日志、处理用户上传的文件等,pathlib 提供了跨平台的文件操作方式。
- 结构化数据存储:Agent 可能需要将处理结果保存为结构化文件(如 JSON、YAML),pathlib 的文件读写方法简化了这一过程。
- 动态文件系统导航:Agent 在处理文件系统任务时,如代码分析、文档生成等,需要遍历目录结构,pathlib 的
glob()和walk()方法提供了强大的目录遍历能力。
初学者易错点
- 路径拼接错误:使用
+而不是/来拼接路径,正确的做法是使用/运算符或joinpath()方法。 - 混淆纯路径和具体路径:纯路径不进行实际文件系统操作,如果需要读取或写入文件,应使用具体路径(Path)。
- 忽略路径解析:在处理相对路径时,忘记使用
resolve()或absolute()获取绝对路径,可能导致文件找不到。 - 路径规范化问题:pathlib 会自动规范化路径(如去除
./和../),这可能与预期行为不符,特别是在处理符号链接时。 - 大小写敏感性:在不同操作系统上,路径的大小写敏感性不同,Windows 默认不区分大小写,而 Unix 系统区分。
相关词条
library-os.path- 传统路径操作模块library-glob- 文件模式匹配library-shutil- 高级文件操作library-tempfile- 临时文件处理library-fs- 虚拟文件系统接口