Python路径操作模块pathlib
1 pathlib简介
pathlib是跨平台的、面向对象的路径操作模块,可适用于不同的操作系统,其操作对象是各种操作系统中使用的路径(包括绝对路径和相对路径),pathlib有两个主要的类,分别为PurePath和Path。
pathlib模块主类继承关系图
1)PurePath
PurePath访问实际文件系统的“纯路径”,只负责对路径字符串执行操作。PurePath 有两个子类,即PurePosixPath和PathWindowsPath,前者用于操作UNIX(包括 Mac OS X)风格的路径,后者用于操作Windows风格的路径。
2)Path
Path访问实际文件系统的“真正路径”,Path对象可用于判断对应的文件是否存在、是否为文件、是否为目录等。有两个子类,即PosixPath和WindowsPath,前者用于操作UNIX(包括 Mac OS X)风格的路径,后者用于操作Windows风格的路径。
3)PurePath和Path的区别
Path 是 PurePath 的子类,除了支持 PurePath 的各种操作、属性和方法之外,还会真正访问底层的文件系统,包括判断 Path 对应的路径是否存在,获取 Path 对应路径的各种属性(如是否只读、是文件还是文件夹等),甚至可以对文件进行读写。
PurePath 和 Path 最根本的区别在于,PurePath 处理的仅是字符串,而 Path 则会真正访问底层的文件路径,因此它提供了属性和方法来访问底层的文件系统。
4)UNIX 和 Windows 风格路径区别
UNIX 风格的路径和 Windows 风格路径的主要区别在于根路径和路径分隔符,UNIX 风格路径的根路径是斜杠(/),而 Windows 风格路径的根路径是盘符(c:);UNIX 风格的路径的分隔符是斜杠(/),而 Windows 风格路径的分隔符是反斜杠(\)。
注意:
考虑到操作系统的不同,在使用 PurePath 类时,如果在 UNIX 或 Mac OS X 系统上使用 PurePath 创建对象,该类的构造方法实际返回的是 PurePosixPath 对象;反之,如果在 Windows 系统上使用 PurePath 创建对象,该类的构造方法返回的是PureWindowsPath 对象。
考虑到操作系统的不同,Path 类的使用同 PurePath 类。
2 pathlib与os的区别
在Python 3.4之前,涉及路径相关操作,都用os模块解决,尤其是os.path这个子模块非常有用。在Python 3.4之后,pathlib成为标准库模块,其使用面向对象的
编程方式来表示文件系统路径,丰富了路径处理的方法。
1)pathlib优势
相对于传统的os及os.path,pathlib具体如下优势:
•pathlib实现统一管理,解决了传统操作导入模块不统一问题;
•pathlib使得在不同操作系统之间切换非常简单;
•pathlib是面向对象的,路径处理更灵活方便,解决了传统路径和字符串并不等价的问题;
•pathlib简化了很多操作,简单易用。
2)pathlib和os常用操作对比
通过常用路径操作的对比,可以更深刻理解pathlib和os的区别,便于在实际操作中做对照,也便于进行使用替代,详细对比如下:
pathlib操作os及os.path操作功能描述solve() os.path.abspath() 获得绝对路径
Path.chmod() os.chmod()
修改文件权限和时间戳
Path.mkdir() os.mkdir() 创建目录
文件或文件夹重命名,如果路径不同,会移动并重新命名
文件或文件夹重命名,如果路径不同,会移动并重新命名,如果存在,则破坏现有目标。
Path.cwd() os.getcwd()
获得当前工作目录
判断是否存在文件或目录name
Path.home() panduser()
返回电脑的用户目录
Path.is_dir() os.path.isdir()
检验给出的路径是一个文件
Path.is_file() os.path.isfile()
检验给出的路径是一个目录
Path.is_symlink() os.path.islink()
检验给出的路径是一个符号链接
Path.stat() os.stat() 获得文件属性
PurePath.is_absolute() os.path.isabs()
判断是否为绝对路径
PurePath.joinpath() os.path.join()
连接目录与文件名或目录
PurePath.name os.path.basename() 返回文件名PurePath.parent os.path.dirname() 返回文件路径
Path.samefile() os.path.samefile()
判断两个路径是否相同
PurePath.suffix os.path.splitext()
分离文件名和扩展名
3 具体使用方法
以下操作是在Windows系统内完成的。
1)路径获取
传入字符串
在创建PurePath和Path时,既可以传入单个字符串,也可传入多个路径字符串,PurePath会将它们拼接成一个字符串。
from pathlib import*
PurePath('M工具箱','MTool工具/示例','info')
# 结果: PureWindowsPath('M工具箱/MTool工具/示例/info')
Path('M工具箱')
# 结果: WindowsPath('M工具箱')
input_path = r"C:\Users\okmfj\Desktop\MTool工具"
Path(input_path)
# 结果: WindowsPath('C:/Users/okmfj/Desktop/MTool工具')
获取目录
•Path.cwd(),返回文件当前所在目录;
•Path.home(),返回电脑用户的目录。
from pathlib import*
Path.cwd()
# 结果: WindowsPath('D:/M工具箱')
Path.home()
# 结果: WindowsPath('C:/Users/okmfj')
目录拼接
拼接出Windows桌面路径,当前路径下的子目录或文件路径。
from pathlib import*
# 拼接出Windows桌面路径
Path(Path.home(), "Desktop")
# 结果: WindowsPath('C:/Users/okmfj/Desktop')
# 拼接出Windows桌面路径
python怎么读取dat文件Path.joinpath(Path.home(), "Desktop")
# 结果: WindowsPath('C:/Users/okmfj/Desktop')
# 拼接出当前路径下的“MTool工具”子文件夹路径
Path.cwd() /'MTool工具'
# 结果: WindowsPath('D:/M工具箱/MTool工具')
2)路径处理
获取路径的不同部分、或不同字段等内容,用于后续的路径处理,如拼接路径、修改文件名、更改文件后缀等。
from pathlib import*
input_path = r"C:\Users\okmfj\Desktop\MTool工具"
Path(input_path).name # 返回文件名+文件后缀
Path(input_path).stem # 返回文件名
Path(input_path).suffix # 返回文件后缀
Path(input_path).suffixes # 返回文件后缀列表
Path(input_path).root # 返回根目录
Path(input_path).parts # 返回文件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论