以一个更方便和更人性化的方法对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()