os.path超详细解读

一、解析路径

我们直接上代码,根据代码学才是最有效的学习方法。

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会自动加上路径分隔符 ‘’。

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值