目录
前言
Pathlib库提供了一个面向对象的API来解析,建立,测试和处理文件名和路径,而不是使用底层字符串操作。
其中Pathlib库有2个非常关键的类名:PurePosixPath,PureWindowsPath。它们可以在任意操作系统上实例化和使用,因为它们只处理文件名与目录名。
要实例化一个具体的类来处理真正的文件系统,需要使用Path得到一个PosixPath或WindowsPath,至于取哪个,取决于你是什么系统。
建立路径
下面,我们来通过Pathlib库建立路径。示例如下:
import pathlib
users = pathlib.PurePosixPath('/Users')
print(users)
users_liyuanjing = users / 'liyuanjinglyj'
print(users_liyuanjing)
users_yellow = users / pathlib.PurePosixPath('yellow')
print(users_yellow)
users_etc = users / '/ect/'
print(users_etc)
运行之后,效果如下:
如上面代码所示,我们通过PurePosixPath实例化一个新路径,新路径的对象表示的就是这个字符串的值。
而像之前使用os.path.join()组合路径,这里可以直接使用"/"符号进行拼接,即可以拼接字符串,也可以在拼接一个新路径的PurePosixPath对象。不过,有一点和os.path.join()一样,就是组合路径中,一旦后面也有“/”符号,那么就会舍弃前面的路径,比如最后的/etc路径。
joinPath()
既然提到了os.path.join()函数,我们就先来介绍一个Pathlib库中很像它的函数:joinPath()。它也是用于拼接路径的,具体示例如下:
import pathlib
users = pathlib.PurePosixPath()
paths = ['liyuanjinglyj', 'yellow']
result = users.joinpath(*paths)
print(result)
运行之后,效果如下:
路径格式化
既然是字符串路径,那么拼接的时候,肯定会有不规范的地方。所以,我们需要使用resolve()函数进行字符串路径规范化,示例如下:
import pathlib
users = pathlib.Path()
result = users / '..' / 'liyuanjing'
print(result.resolve())
users = pathlib.Path('/Users/local')