面向对象的文件系统路径
pathlib的Python项目详细描述
注意:此后台端口模块不再维护。如果您想报告问题或提供修补程序,请考虑pathlib2项目。
说明
pathlib提供了一组类来处理文件系统路径。它提供了 与使用字符串对象相比有以下优点:
- 不再麻烦地使用os和os.path函数一切都可以 通过运算符、属性访问和方法调用很容易完成。
- 体现了不同路径类型的语义例如,比较 窗口路径忽略大小写。
- 定义良好的语义,消除任何缺点或歧义(向前vs. 向后斜杠等)。
要求
建议使用Python3.2或更高版本,但Pathlib也可用于Python2.7 和2.6。
安装
在Python3.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 developer’s guide和 在Python bug tracker上报告问题。
但是,如果您发现特定于先前版本的python的问题 (如2.7或3.2),您可以在 BitBucket project page。
历史记录
版本1.0.1
- 拉取请求4:Eevee提供的Python2.6兼容性。
版本1.0
这个版本使pathlib成为官方python 3.4的最新版本 发布,并修复了两个2.7特定的问题。
- python问题20765:为purepath.with_name()添加缺少的文档 和purepath.with_suffix().
- 当工作目录有额外的位时,修复test_mkdir_父目录 设置(例如setgid或粘性位)。
- Python问题2011:pathlib.Path.with_suffix()现在检查 给定后缀。
- Python问题#19918:修复Windows下的PurePath.relative_to()
- python问题19921:当使用parents=true调用path.mkdir()时,任何 使用默认权限创建缺少的父项,忽略模式 参数(模拟posix“mkdir-p”命令)。
- python问题19887:改进path.resolve()算法以支持 某些符号链。
- 使pathlib在使用unicode路径名的python 2.7下可用(仅纯 不过,是ASCII)
- 问题21:在使用新除法时,修复Python2.7下的typeerror。
- 添加毒物支持以便于测试。
版本0.97
此版本使pathlib与指定的最终API保持最新 在PEP 428中。此处列出的更改太长,建议 阅读documentation。
警告
此版本中的API与Pathlib 0.8和 早期的。一定要检查一下你的密码,看是否有破损!
版本0.8
- 添加purepath.name和purepath.anchor。
- 添加Path.owner和Path.group
- 添加path.replace()。
- 添加path.as_uri()。
- 问题10:创建path.open()文件时,不要设置可执行文件 比特。
- 问题11:修复与非路径对象的比较
版本0.7
- 将'**'(递归)模式添加到path.glob()中。
- 修复了Python3.3beta1中API重构后的openat()支持。
- 将target_is_directory参数添加到path.symlink_to()
版本离子0.6
- add path.is_file()和path.is_symlink()
- 添加path.glob()和path.rglob()
- 添加purepath.match()
版本0.5
- 添加path.mkdir()。
- michele lacchia添加了python 2.7兼容性。
- 当级别大于路径时,使parent()引发值错误 长度。