Skip to content

路径操作

pathlib 是跨平台的、面向对象的路径操作模块,可适用于不同的操作系统,其操作对象是各种操作系统中使用的路径(包括绝对路径和相对路径)。

img.png

pathlib 与 os 的区别

在 Python 3.4 之前,涉及路径相关操作,都用 os 模块解决,尤其是 os.path 这个子模块非常有用。在 Python 3.4 之后,pathlib 成为标准库模块,其使用面向对象的编程方式来表示文件系统路径,丰富了路径处理的方法。

pathlib 优势

相对于 os 模块,pathlib 模块具体如下优势:

  • 实现统一管理,解决了传统操作导入模块不统一问题;
  • 使得在不同操作系统之间切换非常简单;
  • 是面向对象的,路径处理更灵活方便,解决了传统路径和字符串并不等价的问题;
  • 简化了很多操作,简单易用。

pathlib 和 os 操作对比

通过常用路径操作的对比,可以更深刻理解 pathlib 和 os 的区别,便于在实际操作中做对照,也便于进行使用替代,详细对比如下:

pathlib 操作os 操作者功能描述
Path.resolve()os.path.abspath()获得绝对路径
Path.chmod()os.chmod()修改文件权限和时间戳
Path.mkdir()os.mkdir()创建目录
Path.rename()os.rename()文件或文件夹重命名,如果路径不同,会移动并重新命名
Path.replace()os.replace()文件或文件夹重命名,如果路径不同,会移动并重新命名,如果存在,则破坏现有目标。
Path.rmdir()os.rmdir()删除目录
Path.unlink()os.remove()删除一个文件
Path.unlink()os.unlink()删除一个文件
Path.cwd()os.getcwd()获得当前工作目录
Path.exists()os.path.exists()判断是否存在文件或目录name
Path.home()os.path.expanduser()返回电脑的用户目录
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.nameos.path.basename()返回文件名
PurePath.parentos.path.dirname()返回文件路径
Path.samefile()os.path.samefile()判断两个路径是否相同
PurePath.suffixos.path.splitext()分离文件名和扩展名

常用方法

获取目录

  • Path.cwd(),返回文件当前所在目录;
  • Path.home(),返回电脑用户的目录。
python
>>> from pathlib import Path
>>> print(Path.cwd())
D:\zhengxin_docs
>>> print(Path.home())
C:\Users\zhengxinonly

目录拼接

拼接出 Windows 桌面路径,当前路径下的子目录或文件路径。

python
>>> Path(Path.home(), "Desktop")
WindowsPath('C:/Users/zhengxinonly/Desktop')
>>> Path.joinpath(Path.home(), "Desktop")
WindowsPath('C:/Users/zhengxinonly/Desktop')
>>> Path.cwd() / 'test'      
WindowsPath('D:/zhengxin_docs/test')

路径处理

获取路径的不同部分、或不同字段等内容,用于后续的路径处理,如拼接路径、修改文件名、更改文件后缀等。

python
>>> input_path = r"C:\Users\zhengxinonly\Desktop\test.py"
>>> Path(input_path).name  # 返回文件名+文件后缀
'test.py'
>>> Path(input_path).stem  # 返回文件名
'test'
>>> Path(input_path).suffix  # 返回文件后缀
'.py'
>>> Path(input_path).suffixes  # 返回文件后缀列表
['.py']
>>> Path(input_path).root  # 返回根目录
'\\'
>>> Path(input_path).parts  # 返回文件
('C:\\', 'Users', 'zhengxinonly', 'Desktop', 'test.py')
>>> Path(input_path).anchor  # 返回根目录
'C:\\'
>>> Path(input_path).parent  # 返回父级目录
WindowsPath('C:/Users/zhengxinonly/Desktop')
>>> Path(input_path).parents  # 返回所有上级目录的列表
<WindowsPath.parents>

路径判断

  • Path.exists(),判断 Path 路径是否是一个已存在的文件或文件夹;
  • Path.is_dir(),判断 Path 是否是一个文件夹;
  • Path.is_file(),判断 Path 是否是一个文件。
python
>>> input_path = r"C:\Users\zhengxinonly\Desktop\test.py"
>>> Path(input_path).exists()
True
>>> Path(input_path).is_file()
True
>>> Path(input_path ).is_dir()
False