欢迎大家来到IT世界,在知识的湖畔探索吧!
Python pathlib 模块用法详解
pathlib 是 Python 3.4(PEP 428)引入的一个面向对象的文件系统路径操作模块,旨在替代旧版 os.path 的字符串拼接方式。它提供了一个统一的接口来处理不同操作系统(Windows、Linux、macOS)的路径问题,并且语法更直观、可读性更强。
一、核心类与基础概念
1.路径类
- Path:最常用的类,表示当前系统的路径(自动关联 PurePosixPath 或 PureWindowsPath)。
- PurePath:抽象基类,用于创建不依赖具体操作系统的路径表示。
- PosixPath / WindowsPath:底层具体实现类(仅在对应系统中可用)。
2.路径构建
from pathlib import Path # 创建路径对象 path = Path('data', 'file.txt') # 自动拼接为 data/file.txt(跨平台安全) print(path) # 输出: data/file.txt (Linux/macOS)或 data\file.txt(Windows) # 使用斜杠拼接路径(类似命令行) path = Path('home') / 'user' / 'documents' # 更直观的拼接方式
欢迎大家来到IT世界,在知识的湖畔探索吧!
二、常用路径属性与操作
1.路径信息提取
欢迎大家来到IT世界,在知识的湖畔探索吧!path = Path('data/reports/yearly/summary.csv') print(path.parent) # 上级目录: data/reports/yearly print(path.name) # 文件名: summary.csv print(path.stem) # 文件名(无后缀): summary print(path.suffix) # 后缀(含点): .csv print(path.drive) # 盘符(仅Windows): C:
2.检查路径有效性
path = Path('data/file.txt') print(path.exists()) # 路径是否存在? print(path.is_file()) # 是否是文件? print(path.is_dir()) # 是否是目录? print(path.is_symlink()) # 是否是符号链接?
三、常见文件系统操作
1.创建与删除
欢迎大家来到IT世界,在知识的湖畔探索吧!path = Path('new_folder') path.mkdir(exist_ok=True) # 递归创建目录(exist_ok避免异常) path.rmdir() # 删除空目录 # 创建包含父目录的结构 Path('a/b/c').mkdir(parents=True, exist_ok=True)
2.遍历目录
# 列出当前目录所有 `.txt` 文件 for file_path in Path('.').glob('*.txt'): print(file_path) # 递归搜索所有文件 for file_path in Path('.').rglob('*.py'): print(file_path)
3.文件读写
欢迎大家来到IT世界,在知识的湖畔探索吧!# 读取文件内容(简单方式) content = Path('file.txt').read_text(encoding='utf-8') # 写入文件(自动创建) Path('output.txt').write_text('Hello World', encoding='utf-8') # 二进制读写 data = Path('image.png').read_bytes()
四、高级功能
1.路径遍历与模式匹配
# 匹配文件名结尾为 _v2 的所有 JSON 文件 matches = Path('data').glob('*_v2.json') # 匹配所有子目录中的特定文件 for path in Path('.').rglob('requirements.txt'): print(f"Found: {path}")
2.操作路径字符串
欢迎大家来到IT世界,在知识的湖畔探索吧!path = Path('/usr/local/bin/python') # 替换后缀 new_path = path.with_suffix('.exe') # '/usr/local/bin/python.exe' # 替换文件名 new_path = path.with_name('node') # '/usr/local/bin/node'
五、注意事项与最佳实践
1.路径拼接安全
避免使用字符串拼接路径:
wrong_path = 'home' + '\\' + 'user' + '\\' + 'file.txt' # Windows 有效,但不跨平台 # 推荐方式 correct_path = Path('home') / 'user' / 'file.txt'
2.符号链接处理
欢迎大家来到IT世界,在知识的湖畔探索吧!# 忽略符号链接(防止误删) for file in Path('.').iterdir(): if not file.is_symlink(): print(file)
3.相对路径与绝对路径
print(Path('..').absolute()) # 输出完整路径(如 Windows 下: C:\Users\user\project\..\) # 解析实际路径(解决相对路径和符号链接) print(Path('data/./files/../final.txt').resolve())
六、pathlib vs os 模块对比
|
功能 |
os.path 写法 |
pathlib 写法 |
|
路径拼接 |
os.path.join(‘a’, ‘b’) |
Path(‘a’) / ‘b’ |
|
文件扩展名提取 |
os.path.splitext(‘file.txt’)[1] |
Path(‘file.txt’).suffix |
|
目录创建(递归) |
os.makedirs(‘a/b/c’) |
Path(‘a/b/c’).mkdir(parents=True) |
|
当前工作目录 |
os.getcwd() |
Path.cwd() |
|
行为跨平台一致性 |
依赖于系统,需手动兼容 |
自动适配系统行为 |
七、总结
pathlib 提供了一种更现代、更安全的路径处理方式,推荐在新项目中优先使用:
- 更清晰的面向对象语法
- 安全的路径拼接和访问方式
- 一致的跨平台操作
- 丰富的文件系统操作方法(如读写、遍历、匹配)
通过 Path 对象,你可以更高效、更直观地完成文件和目录处理任务,从而减少手动处理路径字符串带来的错误。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/139594.html