Python pathlib模块类结构与路径操作详解

陈默
陈默
发布时间:2026-10-14 | 4人浏览过
原创

本文深入解析Python pathlib模块的核心类结构,详细对比PurePath与Path类的功能差异。通过具体代码示例,演示如何创建路径对象、处理不同操作系统的路径格式(Windows与UNIX),以及利用斜杠运算符拼接路径。文章还涵盖了路径属性的提取、字符串转换及大小写敏感性判断,帮助开发者高效进行跨平台文件路径管理。

pathlib模块类结构概述

pathlib 模块提供了一系列用于处理文件路径的类,其继承体系如图 1 所示。

图 1 pathlib模块中类的组织结构

如图 1 所示,箭头指示了类之间的继承关系。以 PurePosixPath 和 PurePath 为例,PurePosixPath 是 PurePath 的子类。

pathlib 模块主要处理各类操作系统中的路径字符串,包括绝对路径和相对路径。以下简要介绍图 1 中几个关键类的具体功能:

  • PurePath 类将路径视为普通字符串,支持将多个字符串拼接为当前操作系统兼容的路径格式,并能判断两个路径是否相等。需要注意的是,PurePath 并不验证路径在文件系统中是否真实存在。
  • PurePosixPath 和 PureWindowsPath 继承自 PurePath。前者专门用于处理 UNIX(含 Mac OS X)风格的路径,后者则用于处理 Windows 风格的路径。
  • Path 类与前三个类不同,它处理的路径必须是真实存在的。Path 类提供了检查路径是否存在的方法。
  • PosixPath 和 WindowsPath 是 Path 的子类,分别用于处理 Unix(Mac OS X)风格和 Windows 风格的路径。

需注意,UNIX 和 Windows 操作系统的路径格式存在显著差异,主要体现在根路径和分隔符上。UNIX 系统的根路径为斜杠(/),而 Windows 系统为盘符(如 C:);UNIX 使用斜杠(/)作为分隔符,Windows 则使用反斜杠(\)。

PurePath类构造与路径处理

PurePath 类的用法

PurePath 类(包括其子类 PurePosixPath 和 PureWindowsPath)提供了丰富的构造方法、实例方法和属性供开发者使用。

PurePath类构造方法

使用 PurePath 类时,需注意操作系统的差异。在 UNIX 或 Mac OS X 系统上,PurePath 构造函数实际返回 PurePosixPath 对象;而在 Windows 系统上,则返回 PureWindowsPath 对象。

当然,开发者也可以直接使用 PurePosixPath 或 PureWindowsPath 类来创建特定操作系统风格的路径对象。

例如,在 Windows 系统上执行以下代码:

from pathlib import * # 创建PurePath,实际上使用PureWindowsPath path = PurePath('my_file.txt') print(type(path))

程序执行结果为:

<class 'pathlib.PureWindowsPath'>

显然,在 Windows 操作系统环境下,使用 PurePath 构造函数创建的是 PureWindowsPath 类对象。

读者可自行在 UNIX 或 Mac OS X 系统上运行该程序以验证结果。

此外,PurePath 在创建对象时支持传入多个路径字符串,这些字符串会被拼接成一个完整的路径字符串。例如:

from pathlib import * # 创建PurePath,实际上使用PureWindowsPath path = PurePath('http:','c.biancheng.net','python') print(path)

程序执行结果为:

http:\c.biancheng.net\python

由于本机为 Windows 系统,输出结果为符合 Windows 平台规范的路径。若需在 Windows 系统上生成 UNIX 风格的路径字符串,应使用 PurePosixPath 类。例如:

from pathlib import * path = PurePosixPath('http:','c.biancheng.net','python') print(path)

程序执行结果为:

http:/c.biancheng.net/python

值得一提的是,若在使用 PurePath 构造函数时不传入任何参数,等同于传入了点号 '.'(代表当前路径)作为参数。例如:

from pathlib import * path = PurePath() print(path) path = PurePath('.') print(path)

程序执行结果为:

.
.

另外,如果传给 PurePath 构造方法的多个参数中包含多个根路径,则只有最后一个根路径及其后的子路径会生效。例如:

from pathlib import * path = PurePath('C://','D://','my_file.txt') print(path)

程序执行结果为:

D:\my_file.txt

注意,对于 Windows 风格的路径,只有盘符(如 C、D 等)才被视为根路径。

需要注意的是,如果传给 PurePath 构造方法的参数中包含多余的斜杠或点号(.,表示当前路径),它们会被直接忽略(但 .. 不会被忽略)。举个例子:

from pathlib import * path = PurePath('C://./my_file.txt') print(path)

程序执行结果为:

C:\my_file.txt

PurePath 类还重载了各种比较运算符。对于同种风格的路径字符串,可以判断是否相等或比较大小(实质是字符串比较);对于不同种风格的路径字符串,只能判断是否相等(显然不相等),不能比较大小。

举个例子:

from pathlib import * # Unix风格的路径区分大小写 print(PurePosixPath('C://my_file.txt') == PurePosixPath('c://my_file.txt')) # Windows风格的路径不区分大小写 print(PureWindowsPath('C://my_file.txt') == PureWindowsPath('c://my_file.txt'))

程序执行结果为:

False True

比较特殊的是,PurePath 类对象支持直接使用斜杠(/)作为多个字符串之间的连接符,例如:

from pathlib import * path = PurePosixPath('C://') print(path / 'my_file.txt')

程序执行结果为:

C:/my_file.txt

通过上述方式构建的路径本质上仍是字符串,因此可以使用 str() 函数将 PurePath 对象转换为字符串。例如:

from pathlib import * # Unix风格的路径区分大小写 path = PurePosixPath('C://','my_file.txt') print(str(path))

程序执行结果为:

C:/my_file.txt

PurePath实例属性与方法

PurePath类实例属性和实例方法

表 1 列出了常用的 PurePath 类实例方法和属性。由于 PurePath 的操作对象本质上是字符串,表 1 中的实例属性和方法实质上也是对字符串进行操作。

表 1 PurePath 类属性和方法

类实例属性和实例方法名 功能描述
PurePath.parts 返回路径字符串中所包含的各部分。
PurePath.drive 返回路径字符串中的驱动器盘符。
PurePath.root 返回路径字符串中的根路径。
PurePath.anchor 返回路径字符串中的盘符和根路径。
PurePath.parents 返回当前路径的全部父路径。
PurPath.parent 返回当前路径的上一级路径,相当于 parents[0] 的返回值。
PurePath.name 返回当前路径中的文件名。
PurePath.suffixes 返回当前路径中的文件所有后缀名。
PurePath.suffix 返回当前路径中的文件后缀名。相当于 suffixes 属性返回的列表的最后一个元素。
PurePath.stem 返回当前路径中的主文件名。
PurePath.as_posix() 将当前路径转换成 UNIX 风格的路径。
PurePath.as_uri() 将当前路径转换成 URL。只有绝对路径才能转换,否则将会引发 ValueError。
PurePath.is_absolute() 判断当前路径是否为绝对路径。
PurePath.joinpath(*other) 将多个路径连接在一起,作用类似于前面介绍的斜杠(/)连接符。
PurePath.match(pattern) 判断当前路径是否匹配指定通配符。
PurePath.relative_to(*other) 获取当前路径中去除基准路径之后的结果。
PurePath.with_name(name) 将当前路径中的文件名替换成新文件名。如果当前路径中没有文件名,则会引发 ValueError。
PurePath.with_suffix(suffix) 将当前路径中的文件后缀名替换成新的后缀名。如果当前路径中没有后缀名,则会添加新的后缀名。

对于表 1 中列出的实例属性和方法的具体用法,此处不再逐一演示,感兴趣的读者可自行尝试其功能。

Path类的真实路径操作

Path类的功能和用法

与 PurePath 类相比,Path 类的最大区别在于支持对路径的真实性进行判断。

从图 1 可以看出,Path 是 PurePath 的子类。因此,Path 类不仅支持 PurePath 提供的各种构造函数、实例属性和方法,还提供了验证路径字符串有效性的方法,甚至能判断路径对应的是文件还是文件夹。如果是文件,还支持进行读写等操作。

与 PurePath 类似,Path 类也有两个子类:PosixPath(表示 UNIX 风格的路径)和 WindowsPath(表示 Windows 风格的路径)。

由于文章篇幅有限,Path 类的属性和方法众多,此处不再一一讲解。感兴趣的读者可通过官方手册 https://docs.python.org/3/library/pathlib.html 进行查阅。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持本站。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表