面向对象的文件系统路径
项目描述
注意:这个 backport 模块不再维护。如果您想报告问题或贡献补丁,请考虑使用pathlib2项目。
描述
pathlib 提供了一组类来处理文件系统路径。与使用字符串对象相比,它具有以下优点:
不再繁琐地使用 os 和 os.path 函数。一切都可以通过运算符、属性访问和方法调用轻松完成。
体现了不同路径类型的语义。例如,比较 Windows 路径会忽略大小写。
定义明确的语义,消除任何缺陷或歧义(正斜杠与反斜杠等)。
要求
建议使用 Python 3.2 或更高版本,但 pathlib 也可用于 Python 2.7 和 2.6。
安装
在 Python 3.4 中,pathlib 现在是标准库的一部分。对于 Python 3.3 及更早版本,easy_install pathlib或pip install pathlib应该可以解决问题。
例子
导入模块类:
>>> from pathlib import *
列出目录中的 Python 源文件:
>>> list(p.glob('*.py')) [PosixPath('test_pathlib.py'), PosixPath('setup.py'), PosixPath('pathlib.py')]
在目录树中导航:
>>> 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
打开一个文件:
>>> with q.open() as f: f.readline() ... '#!/bin/bash\n'
文档
完整的文档可以在Read the Docs 阅读。
贡献
主要开发现在在 Python 标准库中进行:请参阅Python 开发人员指南,并在Python 错误跟踪器上报告问题。
但是,如果您发现特定于以前版本的 Python(例如 2.7 或 3.2)的问题,您可以在 BitBucket 项目页面上发布问题。
历史
版本 1.0.1
拉取请求 #4:eevee 的 Python 2.6 兼容性。
1.0 版
此版本使pathlib与官方 Python 3.4 版本保持同步,还修复了一些 2.7 特定的问题。
Python 问题 #20765:为 PurePath.with_name() 和 PurePath.with_suffix() 添加缺少的文档。
当工作目录设置了其他位(例如 setgid 或粘着位)时,修复 test_mkdir_parents。
Python 问题 #20111:pathlib.Path.with_suffix() 现在健全地检查给定的后缀。
Python 问题 #19918:修复 Windows 下的 PurePath.relative_to()。
Python 问题 #19921:当使用 parents=True 调用 Path.mkdir() 时,将使用默认权限创建任何缺少的父级,忽略 mode 参数(模仿 POSIX“mkdir -p”命令)。
Python 问题 #19887:改进 Path.resolve() 算法以支持某些符号链接链。
使用 unicode 路径名使 pathlib 在 Python 2.7 下可用(尽管只有纯 ASCII)。
问题 #21:在 Python 2.7 下使用新部门时修复 TypeError。
添加 tox 支持以便于测试。
0.97 版
此版本使用PEP 428中指定的最终 API 使pathlib保持最新。改动过长,这里就不一一列举了,推荐阅读文档。
0.8 版
添加 PurePath.name 和 PurePath.anchor。
添加 Path.owner 和 Path.group。
添加 Path.replace()。
添加 Path.as_uri()。
问题 #10:使用 Path.open() 创建文件时,不要设置可执行位。
问题 #11:修复与非路径对象的比较。
0.7版
将“**”(递归)模式添加到 Path.glob()。
在 Python 3.3 beta1 中的 API 重构之后修复 openat() 支持。
将target_is_directory参数添加到 Path.symlink_to()
0.6版
添加 Path.is_file() 和 Path.is_symlink()
添加 Path.glob() 和 Path.rglob()
添加 PurePath.match()
0.5版
添加 Path.mkdir()。
添加 Michele Lacchia 的 Python 2.7 兼容性。
当级别大于路径长度时,让 parent() 引发 ValueError。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。