前言
- 本篇来学习下Python中路径操作模块pathlib
简介
- pathlib 相比常用的 os.path 而言,pathlib 对于目录路径的操作更简洁也更贴近 Pythonic(Python代码风格的)
- pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统
使用
1. 获取当前文件夹路径
from pathlib import Path # 1.可以直接调用类方法.cwd() print(Path.cwd()) # 2.也可以实例化后调用 p = Path('./') print(p.cwd())
2. 获取当前文件路径
# test.py from pathlib import Path # 当前文件路径 p = Path(__file__) print(p) print(p.absolute()) # 获取绝对路径 print(p.resolve()) # 获取绝对路径 print(p.name) # 获取文件名称 'test.py' print(p.stem) # 只要文件名,不要后缀 test print(p.suffix) # 获取文件 后缀.py print(p.suffixes) # 文件所有的后缀 ['.py'] print(p.parts) # 拆分路径 print(p.parent) # 父目录 print(p.parent.parent) # 父目录的父目录 print(p.parents) # 所有的父级 <WindowsPath.parents> print(p.anchor) # 目录前面的部分
3. 获取文件绝对路径
# test.py from pathlib import Path p = Path('test.py') print(p) # test.py 对象 print(p.absolute()) # 绝对路径
4. 获取用户home目录
from pathlib import Path print(Path.home())
5. 判断文件
from pathlib import Path print(Path.cwd().is_file()) # False p = Path('./test.py') print(p.is_file()) # 文件不存在,也会返回False # exists() 判断是否存在 p = Path('./data.json') print(p.exists()) # True or False
6. 判断文件夹
print(Path.cwd().is_dir()) # True p = Path('./test.py') print(p.is_dir()) # False
7. 拼接路径
from pathlib import Path # 当前文件路径 p = Path('./') print(p.absolute()) # 当前绝对路径 print(p.joinpath(p.absolute(), 'test.py')) # 路径拼接data.json
8. 遍历文件目录
from pathlib import Path p = Path(__file__).parent # iterdir()遍历文件目录 for i in p.iterdir(): print([i for i in p.iterdir() if i.is_dir()]) # 文件夹 print([i for i in p.iterdir() if i.is_file()]) # 文件
9. 正则匹配
- glob:只会遍历查找当前目录
from pathlib import Path p = Path(__file__).parent # glob 只会遍历查找当前目录 print(p.glob('*.txt')) print([i for i in p.glob('*.txt')]) print([i for i in p.glob('*.py')])
- rglob :会递归所有子目录
from pathlib import Path p = Path(__file__).parent # rglob 会递归所有子目录 print(p.rglob('*.txt')) # print([i for i in p.rglob('*.txt')]) print([i for i in p.rglob('*.py')])
- match() 检查路径是否符合规则
from pathlib import Path p = Path('6666.txt') # math 检查匹配规则 print('math', p.match('*.txt')) # 只检查规则,符合规则即使文件不存在也会返回True
10. 文件操作
- 创建文件
from pathlib import Path p = Path('./test.json') p.touch() # 创建test.json
- 删除文件
from pathlib import Path p = Path('test.json') p.unlink() # 删除test.json 文件不存在会报错
- 文件读取
from pathlib import Path p = Path('.gitignore') print(p.read_text()) # 读取文本 print(p.read_bytes()) # 读取 bytes
- 文件写入
from pathlib import Path p = Path('data.txt') p.write_text('test') # 写入文本 p = Path('data1.txt') p.write_bytes(b'666') # 写入 tytes
- 创建目录
from pathlib import Path p = Path('test1') # 已经存在的目录会报错 p.mkdir() p = Path('test2/test3') p.mkdir(parents=True) # 递归创建
- 删除目录
from pathlib import Path # rmdir()一次只删除一级目录,且当前目录必须为空 p = Path('test1') p.rmdir() # 删除目录