[python] pathlib
2019-01-16 本文已影响6人
VanJordan
以一个更方便和更人性化的方法对os.path进行了包装,那么我们可以以后统一建立一个ROOT_PATH的path类然后对其进行操作。
-
from pathlib import Path导入包。 -
p = Path(filepath)创建一个path对象
当p是路径的时候-
p.parent:p的父路径 -
p.parents:p的所有祖辈路径,返回一个列表,序号越大表示离p越远。 -
p.iterdir():返回一个迭代器,包含P下所有的文件。 -
p.is_file()和p.is_dir()判断p是文件还是目录。 -
p.is_absolute()判断p是否是绝对路径。 -
p.match('C:\Windows\*'):判断p是否符合某一个模式。 -
p.glob('*.py'):在p下搜索符合某一模式的文件。 -
p.glob('**\*.py')或者p.rglob('*.py')在p及其子目录下搜索符合某一模式文件,rglob是递归的遍历所有子目录的文件。 -
p.mkdir()如果p不是目录的时候创建目录。-
Path.mkdir(mode=0o777, parents=False, exist_ok=False):如果parents为True的时候,那么当中间文件夹缺失的时候也可以创建中间文件夹,如果exist_ok为True的时候那么可以当文件夹存在的时候不raise error.
*p.joinpath('a','b'):文件夹的连接。
-
-
PurePosixPath('/etc').joinpath('init.d', 'apache2')
PurePosixPath('/etc/init.d/apache2')
当p是文件的时候
-
p.name:获取文件名。 -
p.suffix:获取后缀。
其他用法
-
Path.cwd()返回当前路径名 - 最好用的方法莫过于直接用除法就表示路径了。
print(Path("/home/zhaoliang/test.py").parent/'vocab.txt')
> /home/zhaoliang/vocab.txt
-
stem目录最后一个部分,没有后缀
print(Path("/home/zhaoliang/test.py").stem)
>test
-
with_name(name)替换目录最后一个部分并返回一个新的路径
print(Path("/home/zhaoliang/test.py").with_name('vocab.txt'))
> /home/zhaoliang/vocab.txt
-
with_suffix(suffix)替换扩展名,返回新的路径,扩展名存在则不变
print(Path("/home/zhaoliang/test.py").with_suffix('.txt'))
> /home/zhaoliang/test.txt
-
Path().exist()判断路径或者文件是否存在。
# 判断路径是否存在
path = Path("path/file")
path.exist()