pathlib中的Path类继承自PurePath,对PurePath中的部分方法进行了重载,相比于os.path有更高的抽象级别
from pathlib import Path
root = Path("../PycharmProject")
config_dir = root/Path("config")
# 等价于config_dir = os.path.join(root, 'config')
print(str(config_dir))
Output: …/PycharmProject/config
path1 = Path("/home/unv")
path2 = Path("/home/unv/project/src")
print(path2.relative_to(path1))
Output: PosixPath(“project/src”)
正则匹配相关文件,并返回可迭代的文件对象
config.files = config_dir.rglob("*.json")
返回: [ PosixPath("/home/unv/data1.json"), PosixPath("/home/unv/data2.json")]
!可迭代
(具体可看源码的细节)
基本用法:
Path.iterdir() #遍历目录的子目录或者文件
Path.is_dir() #判断是否是目录
Path.glob() #过滤目录(返回生成器)
Path.resolve() #返回绝对路径
Path.exists() #判断路径是否存在
Path.open() #打开文件(支持with)
Path.unlink() #删除文件或目录(目录非空触发异常)
基本属性:
Path.parts #分割路径 类似os.path.split(), 不过返回元组
Path.drive #返回驱动器名称
Path.root #返回路径的根目录
Path.anchor #自动判断返回drive或root
Path.parents #返回所有上级目录的列表
改变路径:
Path.with_name() #更改路径名称, 更改最后一级路径名
Path.with_suffix() #更改路径后缀
#拼接路径
Path.joinpath() #拼接路径
Path.relative_to() #计算相对路径
测试路径:
Path.match() #测试路径是否符合pattern
Path.is_dir() #是否是文件
Path.is_absolute() #是否是绝对路径
Path.is_reserved() #是否是预留路径
Path.exists() #判断路径是否真实存在
其他方法:
Path.cwd() #返回当前目录的路径对象
Path.home() #返回当前用户的home路径对象
Path.stat() #返回路径信息, 同os.stat()
Path.chmod() #更改路径权限, 类似os.chmod()
Path.expanduser() #展开~返回完整路径对象
Path.mkdir() #创建目录
Path.rename() #重命名路径
Path.rglob() #递归遍历所有子目录的文件
参考:[pathlib]内置pathlib库的常用属性和方法