目录
11. 修改文件名或后缀名(只是修改读取后存在变量里的名字,并不会对存在的文件进行修改)
前言
pathlib 模块提供了表示文件系统路径的类,可适用于不同的操作系统。使用 pathlib 模块,相比于 os 模块可以写出更简洁,易读的代码。
1. 创建路径对象
from pathlib import Path
# 创建一个新的路径对象
p = Path('021/1.py')
print(p)
# 021\1.py
2. 获取路径信息
from pathlib import Path
# 创建一个新的路径对象
p = Path('45/021/1.py')
# 获取文件名
print(p.name) # 1.py
# 获取目录
print(p.parent) # 45\021
# 获取后缀名
print(p.suffix) # .py
# 获取没有后缀名的文件名
print(p.stem) # 1
# 获取绝对路径
print(p.absolute()) # G:\00 test\45\021\1.py
# 获取当前工作路径。也可以用p.cwd()
print(p.cwd()) # G:\00 test
# 获取home路径。也可以用p.home()
print(Path.home()) # C:\Users\021
3. 检查目录或文件是否存在
from pathlib import Path
# 创建一个新的路径对象
p = Path('1.py')
# 检查路径是否存在
print(p.exists()) # True
4. 创建目录与文件
from pathlib import Path
# 创建一个新的路径对象
p = Path('254')
# 创建目录
p.mkdir()
p = Path('25.py')
# 创建文件
p.touch()
重点:
p.mkdir(parents=True, exist_ok =True)
如果parents为真,表示创建多级目录.
如果parents为 false(默认值),则创建多级目录会提示:系统找不到指定的路径。
如果exist_ok为false(默认值),则在目标目录已存在时引发报错。
如果exist_ok为真,目录已存在的异常将被忽略.
5. 删除文件或目录
from pathlib import Path
# 创建一个新的路径对象
p = Path('254')
# 删除目录,一定要保证文件夹是空的,否则报错(有空文件夹也不行)
p.rmdir()
p = Path('25.py')
# 删除文件
p.unlink()
6. 遍历目录
from pathlib import Path
# 创建一个新的路径对象
p = Path('基于深度学习的人脸表情识别、带GUI界面、文本显示')
print([path for path in p.glob("*")]) # 遍历此目录下的所有文件和子目录(不包括子目录文件)
print([path for path in p.iterdir()]) # 同上,遍历此目录下的所有文件和子目录(不包括子目录文件)
print([path for path in p.glob("*.py")]) # 在此目录查找后缀为py的文件
print([path for path in p.glob("*/*.py")]) # 在此目录的子目录查找后缀为py的文件
print([path for path in p.glob("**/*.py")]) # 在此目录及其所有子目录查找后缀为py的文件,递归地查找
# 注:返回的是一个生成器类型
7. 拼接路径
from pathlib import Path
# 创建一个新的路径对象
p = Path('45/021')
# 使用 Path.joinpath 拼接路径
print(p.joinpath("das")) # 45\021\das
# 可以使用 / 代替
print(p / "das") # 45\021\das
8. 重命名文件或目录
from pathlib import Path
# 创建一个新的路径对象
p = Path('021')
# 重命名目录
print(p.rename("120"))
p = Path('1.py')
# 重命名文件
print(p.rename("2.py"))
9. 判断是否为文件或目录、是否为绝对路径
from pathlib import Path
# 创建一个新的路径对象
p = Path('021/1.py')
# 判断是否为文件
print(p.is_file()) # True
p = Path('021')
# 判断是否为目录
print(p.is_dir()) # True
# 判断是否为绝对路径
print(p.is_absolute()) # False
10. 获取父目录(即返回所有上级目录的列表)
from pathlib import Path
# 创建一个新的路径对象
p = Path('021/antoine/pathlib/1.py')
print([path for path in p.parents])
# [WindowsPath('021/antoine/pathlib'), WindowsPath('021/antoine'), WindowsPath('021'), WindowsPath('.')]
11. 修改文件名或后缀名(只是修改读取后存在变量里的名字,并不会对存在的文件进行修改)
from pathlib import Path
p = Path('1.py')
# 重命名文件名(不会对本地文件修改)
print(p.with_suffix('.png')) # 1.png
# 重命名后缀名(不会对本地文件修改)。和p.rename()不同,rename()会对本地文件进行修改
print(p.with_name('2.py')) # 2.py
12. 分割路径
from pathlib import Path
p = Path('021/035/1.py')
# 分割路径 类似os.path.split(), 不过返回元组
print(p.parts) # ('021', '035', '1.py')