基本架构

路径类分成两类:

  • 纯路径/pure path:仅用于逻辑操作,比如:路径的拼接,basename等,本质上都是字符串操作;
  • 具体路径/concrete path:不仅用于逻辑操作,还涉及实际IO操作(和OS 交互),比如创建目录,检查是否存在等;

类图如下:

image

Path类是具体路径,可以根据不同平台使用更具体的子类,也可以使用Path作为跨平台的统一接口。一般情况下,Path是最通用的推荐接口。

PurePath是纯路径,不同平台的路径格式有区别,所以PurePath也有针对具体平台的子类。

需要注意,平台相关的具体路径在不匹配的平台上无法实例化,但是平台相关的纯路径,比如PurePosixPath在Windows上也可以实例化,因为只涉及逻辑操作,不和OS交互。

基本使用

以最通用的Path类为例。

列出目录内容

p = Path('.')
p.iterdir()

通配符模式查找文件:使用glob

p.glob('**/*.py') # 递归查找
p.rglob('*.py') # 递归查找

路径拼接:使用/

p / 'init.d' / 'apache2'
p.joinpath('init.d', 'apache2') # 等价

查询路径属性

q.exists()
q.is_dir()
q.is_file()

路径名逻辑操作:使用路径属性获取

p.root # 根目录
p.parent # 父目录
p.name # basename
p.suffix # 最后一个后缀
p.suffixes # 全部后缀
p.stem # 去掉后缀的basename

创建目录

p.mkdir()

获取绝对路径

p.absolute()

打开文件

with q.open() as f: f.readline()

高级使用

路径名替换

p = PureWindowsPath('c:/Downloads/pathlib.tar.gz')
p.with_name('setup.py') # PureWindowsPath('c:/Downloads/setup.py')
p.with_stem('lib') # PureWindowsPath('c:/Downloads/lib.gz')
p.with_suffix('.bz2') # PureWindowsPath('c:/Downloads/pathlib.tar.bz2')

<
Previous Post
标准库: logging
>
Next Post
标准库: re