迷途小书童
读完需要
4
分钟速读仅需 2 分钟
大家好,我是迷途小书童!
今天给大家介绍 Python 中的内置库 Pathlib。
pathlib 模块是 Python 3.4 中新增的标准库,它提供了面向对象的文件系统路径处理方法。pathlib 致力于解决直接操作文件路径字符串容易引发的错误,对路径提供了内置的多种处理方式,使用简单又功能强大。
在 pathlib 模块被引入之前,os.path 模块一直是 Python 中处理文件路径的首选。它包含许多操作路径的函数,如 os.path.join()、os.path.exists() 等等。但是这些函数直接接收路径的字符串,非常容易导致路径拼接错误。
为了解决这个问题,Python 引入了 pathlib,其设计灵感来源于 Shutil 模块。pathlib 提供了 Path 类来封装路径操作,更安全易用。
1
实现原理
pathlib 的核心是 Path 类,它将路径封装成一个对象,可以对其调用各种方法来处理文件系统路径。Path 的实现主要依赖 Python 的 PurePath 类提供的底层 C API。PurePath 将路径分割成不同部分,通过组合操作实现路径功能。
Path 类对 PurePath 进行封装,提供面向对象的高级接口,如添加子路径、读取文件内容、检查路径是否存在等操作。
2
应用场景
pathlib 可广泛用于任何需要文件路径处理的场景,如
拼接路径时使用 Path 对象而不是字符串,避免手动处理操作系统特定的分隔符
检查文件状态、metadata、创建删除目录
读取写入文件内容
遍历目录下文件
将路径传给接受字符串的 API
它是所有 Python 程序中处理路径的最佳选择。
3
优缺点
先列优点:
面向对象接口,简洁易用
避免直接字符串拼接使出错
提供多种文件系统方法
当然,也有缺点:
Python 3.4 以上才有,旧版本不支持
某些高级操作可能还需要 os 模块配合
4
代码示例
下面再来看个完整的示例,部分注释与代码执行结果写在了代码中间
from pathlib import Path
# 创建Path对象
p = Path('/usr/local')
# 组合子路径
sub_p = p / 'bin' / 'python'
# 查看父目录
print(sub_p.parent)
# /usr/local/bin
# 查看文件名称
print(sub_p.name)
# python
# 拼接路径字符串
print(str(sub_p))
# /usr/local/bin/python
# 检查路径是否存在
print(sub_p.exists())
# 遍历目录下所有文件
for f in p.iterdir():
print(f)
# 在目录下创建新目录
new_dir = p / 'temp'
new_dir.mkdir()
# 写入文本文件
text_file = new_dir / 'text.txt'
text_file.write_text('Hello World!')
# 读取文本文件
print(text_file.read_text())
# 重命名文件
text_file.rename('hello.txt')
5
总结
pathlib 为路径处理提供了更优雅更 Python 式的解决方案。它既保留了 os.path 的灵活性,又使代码更安全简洁。pathlib 是所有 Python 程序员必须掌握的重要知识点。
6
免费社群