欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入我们的社群。

Python中的Pathlib

Python基础 迷途小书童 1年前 (2023-09-06) 555次浏览 0个评论

简介

pathlib 模块是 Python 3.4中新增的标准库,它提供了面向对象的文件系统路径处理方法。pathlib 致力于解决直接操作文件路径字符串容易引发的错误,对路径提供了内置的多种处理方式,使用简单又功能强大。

pathlib 模块被引入之前,os.path 模块一直是 Python 中处理文件路径的首选。它包含许多操作路径的函数,如 os.path.join()os.path.exists() 等等。但是这些函数直接接收路径的字符串,非常容易导致路径拼接错误。

为了解决这个问题,Python 引入了 pathlib,其设计灵感来源于 Shutil 模块。pathlib 提供了 Path 类来封装路径操作,更安全易用。

实现原理

pathlib 的核心是 Path 类,它将路径封装成一个对象,可以对其调用各种方法来处理文件系统路径。Path 的实现主要依赖 PythonPurePath 类提供的底层 C APIPurePath 将路径分割成不同部分,通过组合操作实现路径功能。

Path 类对 PurePath 进行封装,提供面向对象的高级接口,如添加子路径、读取文件内容、检查路径是否存在等操作。

应用场景

pathlib 可广泛用于任何需要文件路径处理的场景,如

  • 拼接路径时使用Path对象而不是字符串,避免手动处理操作系统特定的分隔符
  • 检查文件状态、metadata、创建删除目录
  • 读取写入文件内容
  • 遍历目录下文件
  • 将路径传给接受字符串的API

它是所有 Python 程序中处理路径的最佳选择。

优缺点

先列优点:

  • 面向对象接口,简洁易用
  • 避免直接字符串拼接使出错
  • 提供多种文件系统方法

当然,也有缺点:

  • Python 3.4以上才有,旧版本不支持
  • 某些高级操作可能还需要os模块配合

代码示例

下面再来看个完整的示例,部分注释与代码执行结果写在了代码中间

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')

总结

pathlib 为路径处理提供了更优雅更 Python 式的解决方案。它既保留了 os.path 的灵活性,又使代码更安全简洁。pathlib 是所有 Python 程序员必须掌握的重要知识点。

喜欢 (0)

您必须 登录 才能发表评论!