提炼自-> 知乎大神的帖子
>>Note:本文待更新...时刻记录所学
集百家之所长
一、常用函数
1. 路径拼接
In : os.path.join('/', 'home', 'dongwm/code')
Out: '/home/dongwm/code'
In : Path('/').joinpath('home', 'dongwm/code')
Out: PosixPath('/home/dongwm/code')
In : Path('/') / 'home' / 'dongwm/code'
Out: PosixPath('/home/dongwm/code')
**注意**
In : Path('/') / 'home' / 'dongwm/code' / '/' # 起始的 / 会消去前面所有的字符串
Out: PosixPath('/') # 前面的都消失了
2. 查找父目录
In : p = Path('/Users/dongweiming/test')
In : p.parents[0]
Out: PosixPath('/Users/dongweiming')
In : p.parents[1]
Out: PosixPath('/Users')
In : p.parents[2]
Out: PosixPath('/')
In : p.parent
Out: PosixPath('/Users/dongweiming')
In : p.parent.parent
Out: PosixPath('/Users')
3. 获取文件名后缀 或者 文件名
In : p = Path('/usr/local/etc/my.cnf')
In : p.suffix, p.stem
Out: ('.cnf', 'my')
# 多个文件名时
In : Path('my.tar.bz2').suffixes
Out: ['.tar', '.bz2']
In : Path('my.tar').suffixes
Out: ['.tar']
In : Path('my').suffixes
Out: []
4. 获取home目录
In : Path.home()
Out: PosixPath('/Users/dongweiming')
5. 修改文件名或者后缀
In : p = '/home/gentoo/screenshot/abc.jpg'
In : '{}.png'.format(os.path.splitext(p)[0])
Out: '/home/gentoo/screenshot/abc.png'
In : root, ext = os.path.splitext(p) # 返回文件路径与后缀的列表
In : '{}/{}{}'.format(root.rpartition('/')[0], 123, ext)
Out: '/home/gentoo/screenshot/123.jpg'
***采用Path后***
In : p = Path('/home/gentoo/screenshot/abc.jpg')
In : p.with_suffix('.png')
Out: PosixPath('/home/gentoo/screenshot/abc.png')
In : p.with_name(f'123{p.suffix}') # f是python3.6引入的,{}内与c的printf中%累似
Out: PosixPath('/home/gentoo/screenshot/123.jpg')
6. 创建多级目录
# 获取当前目录
Path.pwd() # print working directory
***以下两种方法都可以在当前目录创建多级目录***
1. Path('1/2/3').mkdir(parents=True)
2. os.makedirs('1/2/3')
7. 文件或目录是否存在
# 文件是否存在
Path('1.txt').is_file()
# 路径是否存在
Path('mk1').is_dir()
# 文件或路径是否存在
ans = Path('mk1/mk2').exists()
print(ans)