6.2.3 解析路径
路径对象提供了一些方法和属性可以从路径名中抽取出部分值。例如parts属性可以生成根据路径分隔符值解析得到的一个路径段序列。
import pathlib
p = pathlib.PurePosixPath('/usr/local')
print(p.parts)
这个序列是一个元组,反映了路径实例的不可变性。
运行结果:
(’/’, ‘usr’, ‘local’)
有两种办法可以从一个给定的路径对象在文件系统层次结构中“向上”导航。parent属性指示一个新的路径实例,对应包含给定路径(os.path.dirname()返回的值)的目录。parents属性是一个迭代器,会生成一系列父目录引用,在路径层次结构中不断“向上”,直到到达文件系统的根目录。
import pathlib
p = pathlib.PurePosixPath('/usr/local/lib')
print('parent: {}'.format(p.parent))
print('\nhierarchy:')
for up in p.parents:
print(up)
这个例子迭代处理parents属性并打印成员值。
运行结果:
可以通过路径对象的属性来访问路径的其他部分。Name属性包含路径的最后一部分,即最后一个路径分隔符后面的部分(与os.path.basename()生成的值相同)。suffix属性包含扩展名分隔符后面的值,stem属性包含名字中后缀之前的部分。
import pathlib
p = pathlib.PurePosixPath('./source/pathlib/pathlib_name.py')
print('path : {}'.format(p))
print('name : {}'.format(p.name))
print('suffix: {}'.format(p.suffix))
print('stem : {}'.format(p.stem))
尽管suffix和stem的值与os.path.splitext()生成的值类似,但这些值只是基于name的值,而不是完整路径。
运行结果: