目录
前言
1. 创建路径对象
2. 获取路径信息
3. 检查目录或文件是否存在
4. 创建目录与文件
5. 删除文件或目录
6. 遍历目录
7. 拼接路径
8. 重命名文件或目录
9. 判断是否为文件或目录、是否为绝对路径
10. 获取父目录(即返回所有上级目录的列表)
11. 修改文件名或后缀名(只是修改读取后存在变量里的名字,并不会对存在的文件进行修改)
12. 分割路径
pathlib 模块提供了表示文件系统路径的类,可适用于不同的操作系统。使用 pathlib 模块,相比于 os 模块可以写出更简洁,易读的代码。
from pathlib import Path
# 创建一个新的路径对象
p = Path('021/1.py')
print(p)
# 021\1.py
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
from pathlib import Path
# 创建一个新的路径对象
p = Path('1.py')
# 检查路径是否存在
print(p.exists()) # True
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为真,目录已存在的异常将被忽略.
from pathlib import Path
# 创建一个新的路径对象
p = Path('254')
# 删除目录,一定要保证文件夹是空的,否则报错(有空文件夹也不行)
p.rmdir()
p = Path('25.py')
# 删除文件
p.unlink()
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的文件,递归地查找
# 注:返回的是一个生成器类型
from pathlib import Path
# 创建一个新的路径对象
p = Path('45/021')
# 使用 Path.joinpath 拼接路径
print(p.joinpath("das")) # 45\021\das
# 可以使用 / 代替
print(p / "das") # 45\021\das
from pathlib import Path
# 创建一个新的路径对象
p = Path('021')
# 重命名目录
print(p.rename("120"))
p = Path('1.py')
# 重命名文件
print(p.rename("2.py"))
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
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('.')]
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
from pathlib import Path
p = Path('021/035/1.py')
# 分割路径 类似os.path.split(), 不过返回元组
print(p.parts) # ('021', '035', '1.py')