一、解析路径
我们直接上代码,根据代码学才是最有效的学习方法。
1、split()函数
import os.path
# PATHS为自定义的三个路径列表,此路径并非一定真实存在,在这里相当于处理字符串
PATHS = ['E:\\PDF', 'F:\\aa\\jetson', 'F://b//c//d//e']
for path in PATHS:
print('{!r:>17} : {}'.format(path, os.path.split(path)))
这里我需要重点解释一下,os.path.split()函数将路径分解为两个单独的部分,返回包含这些结果的一个元组(tuple),这个tuple的第二个元素是路径的最后一部分,第一个元素则是此前的所有内容。
接下来我们观察我们打印的这部分内容,17代表创建一个17字节的空间,>代表右对齐(<代表左对齐),%r代表用rper()方法处理对象。format则是将后面的内容依次填补到{}中去。
输出打印结果如下:
'E:\\PDF' : ('E:\\', 'PDF')
'F:\\aa\\jetson' : ('F:\\aa', 'jetson')
'F://b//c//d//e' : ('F://b//c//d', 'e')
2、basename()函数
basename()函数返回的值等价于slit()值的第二部分,也就是我们实际应用时的文件名
import os.path
# PATHS为自定义的三个路径列表,此路径并非一定真实存在,在这里相当于处理字符串
PATHS = ['E:\\PDF', 'F:\\aa\\jetson', 'F://b//c//d//e']
for path in PATHS:
# 为了对齐的效果明显,我们将17改成30,改成左对齐
print('{!r:<30} : {}'.format(path, os.path.basename(path)))
输出打印结果如下:
'E:\\PDF' : PDF
'F:\\aa\\jetson' : jetson
'F://b//c//d//e' : e
3、dirname()函数
dirname()函数返回分解路径的第一部分
import os.path
# PATHS为自定义的三个路径列表,此路径并非一定真实存在,在这里相当于处理字符串
PATHS = ['E:\\PDF', 'F:\\aa\\jetson', 'F://b//c//d//e']
for path in PATHS:
print('{!r:<30} : {}'.format(path, os.path.dirname(path)))
输出打印结果如下:
'E:\\PDF' : E:\
'F:\\aa\\jetson' : F:\aa
'F://b//c//d//e' : F://b//c//d
将basename()和dirname()的内容结合起来可以得到原来的路径。
4、splitext()函数
splitext()函数的工作类似于split(),不过它会根据扩展名分隔符而不是目录分隔符
import os.path
# PATHS为自定义的三个路径列表,此路径并非一定真实存在,在这里相当于处理字符串
PATHS = ['E:\\PDF.txt', 'F:\\aa\\jetson.txt', 'F://b//c//d//e.c']
for path in PATHS:
print('{!r:<30} : {}'.format(path, os.path.splitext(path)))
输出打印结果如下:
'E:\\PDF.txt' : ('E:\\PDF', '.txt')
'F:\\aa\\jetson.txt' : ('F:\\aa\\jetson', '.txt')
'F://b//c//d//e.c' : ('F://b//c//d//e', '.c')
5、commonprefix()函数
commonprefix()函数取一个路径列表作为参数,并且返回一个字符串,表示所有路径中都出现的公共前缀。这个值可能表示一个根本不存在的路径,而且并不考录路径分隔符。
import os.path
PATHS = ['E:\\one\\two\\three\\four', 'E:\\one\\two\\threeyyy', 'E:\\one\\two\\three']
for path in PATHS:
print('PATH:',path)
print('PREFIX:', os.path.commonprefix(PATHS))
输出打印结果如下:
PATH: E:\one\two\three\four
PATH: E:\one\two\threeyyy
PATH: E:\one\two\three
PREFIX: E:\one\two\three
观察打印结果,公共路径为’E:\one\two\three’,第二条路径即使不包含’three’这一条目录,仍然打印出了’three’。
6、commonpath()函数
commonpath()函数则要考虑路径分隔符,返回的公共路径不包含部分路径值。
import os.path
PATHS = ['E:\\one\\two\\three\\four', 'E:\\one\\two\\threeyyy', 'E:\\one\\two\\three']
for path in PATHS:
print('PATH:',path)
print()
print('PREFIX:', os.path.commonpath(PATHS))
输出打印结果如下:
PATH: E:\one\two\three\four
PATH: E:\one\two\threeyyy
PATH: E:\one\two\three
PREFIX: E:\one\two
注意观察结果,与commonprefix()函数的区别在于,并未打印出’three’,因为三条路径并不是都包含three这一个目录,'threeyyy’在’three’后面没有路径分隔符。
二、建立路径
在实际应用中,除了要分解已经存在的路径外,还经常需要新建路径,或者将多个路径组合在一起。
join()函数
import os.path
path1 = 'E:\\a'
path2 = 'b'
path3 = 'c.txt'
path = os.path.join(path1, path2, path3)
print(path)
输出打印结果如下:
E:\a\b\c.txt
我们观察输出结果,os.path.join会自动加上路径分隔符 ‘’。