02pathlib
About 2 min
介绍
提供了一种的路径管理模式
为什么使用 Pathlib 而不是 os.path
- 老的路径操作函数管理比较混乱,有的是导入 os, 有的又是在 os.path 当中,而新的用法统一可以用 pathlib 管理。
- 老用法在处理不同操作系统 win,mac 以及 linux 之间很吃力。换了操作系统常常要改代码,还经常需要进行一些额外操作。
- 老用法主要是函数形式,返回的数据类型通常是字符串。但是路径和字符串并不等价,所以在使用 os 操作路径的时候常常还要引入其他类库协助操作。新用法是面向对象,处理起来更灵活方便。
- pathlib 简化了很多操作,用起来更轻松。
资源文档:
如果以前从未用过此模块,或不确定哪个类适合完成任务,那要用的可能就是 Path。它在运行代码的平台上实例化为 具体路径。
基础使用
列出子目录
from pathlib import Path
p = Path('.')
[x for x in p.iterdir() if x.is_dir()]
列出所有.py 文件
p = Path('.')
[x for x in p.iterdir() if x.is_file() and x.suffix == '.py']#方法1
list(p.glob('**/*.py'))#方法2
在目录树中移动
p = Path('/etc')
q = p / 'init.d' / 'reboot'
q
#PosixPath('/etc/init.d/reboot')
q.resolve()
#PosixPath('/etc/rc.d/init.d/halt')
查询路径的属性
q.exists()
#True
q.is_dir()
#False
path.is_file() # True if path is a regular file
path.is_symlink()
打开文件
with q.open() as f: f.readline()
- 获取文件属性
文件属性比如文件大小,创建时间,修改时间等等。
file = Path('archive/demo.txt')
print(file.stat())
print(file.stat().st_size)
print(file.stat().st_atime)
print(file.stat().st_ctime)
print(file.stat().st_mtime)
找出最后修改的文件的例子:
>>> path = Path.cwd()
>>> max(
[(f.stat().st_mtime, f)
for f in path.iterdir()
if f.is_file()]
)
1589171135.860173 C:\Users\me\study\demo_03.py