Pathlib--Python的路径管理库

Pathlib--Python的路径管理库

摘要: 整理了Pathlib的使用方法,便于速查。

Pathlib使用方法归纳

常用操作

1
from pathlib import Path
1
2
p1 = Path()
print(p1)
.

路径

1
p1.cwd()
PosixPath('/data/home/gaoc/data/1.fast.ai/nbs/dl1')
1
2
# 返回一个新的路径,这个新路径就是当前Path对象的绝对路径
p1.resolve()
PosixPath('/data/home/gaoc/data/1.fast.ai/nbs/dl1')
1
2
# 也可以获取绝对路径,但是推荐使用resolve()
p1.absolute()
PosixPath('/data/home/gaoc/data/1.fast.ai/nbs/dl1')

获取文件名,文件后缀,文件目录

  • name: 目录的最后一个部分
  • suffix:目录中最后一个部分的扩展名
  • stem:目录最后一个部分,没有后缀
  • suffixes:返回多个扩展名列表
  • with_suffix(suffix):补充扩展名到尾部,扩展名存在无效
  • with_name(name):替换目录最后一个部分并返回一个新的路径
1
2
p2 = Path('/data/home/gaoc/data/99.test/Untitled.ipynb.test')
p2.name
'Untitled.ipynb'
1
p2.stem
'Untitled'
1
p2.suffix
'.ipynb'
1
p2.suffixes
['.ipynb', '.test']
1
p2.parent
PosixPath('/data/home/gaoc/data/99.test')
1
2
3
# 返回一个iterable, 包含所有父目录
for i in p2.parents:
print(i)
/data/home/gaoc/data/99.test
/data/home/gaoc/data
/data/home/gaoc
/data/home
/data
/

拼接、检查与分解

操作符:/
Path对象 / Path对象

Path对象 / 字符串 或者 字符串 / Path对象

分解:
parts 属性, 可以返回路径中的每一个部分

joinpath:

joinpath(*other) 连接多个字符串到Path对象中

1
2
p3 = Path(p2.parent, 'test.txt')
p3
PosixPath('/data/home/gaoc/data/99.test/test.txt')
1
2
p3 = p2.parent / 'test2.txt'
p3
PosixPath('/data/home/gaoc/data/99.test/test2.txt')
1
2
p3 = p2.parent.joinpath('etc', 'init.d', Path('abc'))
p3
PosixPath('/data/home/gaoc/data/99.test/etc/init.d/abc')
1
p3.exists()
False
1
p3.is_file()
False
1
p3.is_dir()
False
1
2
# 将路径通过分隔符分割成一个元组
p2.parts
('/', 'data', 'home', 'gaoc', 'data', '99.test', 'Untitled.ipynb.test')

遍历文件夹

1
2
p4 = p2.parent
p4.iterdir()
<generator object Path.iterdir at 0x7f6dfc0fbeb8>
1
2
3
# 相当于os.listdir
for file in p4.iterdir():
print(file)
/data/home/gaoc/data/99.test/.ipynb_checkpoints
/data/home/gaoc/data/99.test/data-science
/data/home/gaoc/data/99.test/Untitled.ipynb
1
list(p4.iterdir())
[PosixPath('/data/home/gaoc/data/99.test/.ipynb_checkpoints'),
 PosixPath('/data/home/gaoc/data/99.test/test'),
 PosixPath('/data/home/gaoc/data/99.test/data-science'),
 PosixPath('/data/home/gaoc/data/99.test/Untitled.ipynb')]
1
2
3
# 相当于os.listdir, 但是可以添加匹配条件
for file in p4.glob("*.ipynb"):
print(file)
/data/home/gaoc/data/99.test/Untitled.ipynb
1
list(p4.glob("*.ipynb"))
[PosixPath('/data/home/gaoc/data/99.test/Untitled.ipynb')]
1
2
3
# 相当于os.walk, 也可以添加匹配条件
for file in p4.rglob("*.ipynb"):
print(file)
/data/home/gaoc/data/99.test/Untitled.ipynb
/data/home/gaoc/data/99.test/.ipynb_checkpoints/Untitled-checkpoint.ipynb
1
list(p4.rglob("*.ipynb"))
[PosixPath('/data/home/gaoc/data/99.test/Untitled.ipynb'),
 PosixPath('/data/home/gaoc/data/99.test/.ipynb_checkpoints/Untitled-checkpoint.ipynb')]

创建文件夹

1
2
p5 = Path(p4,'test')
p5.mkdir(exist_ok=True)
1
p5
PosixPath('/data/home/gaoc/data/99.test/test')
1
p5.mkdir((exist_ok=True, parents=True) # 递归创建文件目录

查看文件信息

获取详细信息

1
2
p6 = Path('/data/home/gaoc/data/99.test/Untitled.ipynb')
p6.stat()
os.stat_result(st_mode=33204, st_ino=57147394, st_dev=2096, st_nlink=1, st_uid=1003, st_gid=1003, st_size=636, st_atime=1555927128, st_mtime=1555926338, st_ctime=1555926338)

文件大小

1
p6.stat().st_size
636

创建时间

1
p6.stat().st_atime
1555927128.4478571

修改时间

1
p6.stat().st_mtime
1555926338.8676176

参考

  1. https://www.jianshu.com/p/a820038e65c3
  2. https://www.cnblogs.com/hkcs/p/7773484.html

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×