路径操作库
betterpath的Python项目详细描述
betterpath或“bp”是对传统twistedFilePath类型的一种改编 以及接口。bp提供了一个简单、健壮、经过良好测试的对象抽象 在文件路径上,将文件路径的概念推广到文件系统之外。
文件路径
bp为文件路径公开接口bp.abstract.IFilePath,并且 提供以下具体实现:
- ^{tt3}$, for the root filesystem
- ^{tt4}$, for ZIP archives
- ^{tt5}$, for in-memory temporary filesystems
此外,还有组合的抽象文件路径,可以包装 其他文件路径周围:
- ^{tt6}$, for read-only filesystems
api文档可在http://betterpath.rtfd.org/找到。
与竞争对手相比
操作路径
尊敬的冠军,os.path是大多数 这些年来python的路径问题。
专业人士
- 在标准库中
缺点
- 不安全
- 冗长
- 在strs上操作
- 没有用于功能的接口或ABC
- 只覆盖根文件系统
路径库
pathlib希望通过pep 428开辟一条通往伟大的道路。
专业人士
- 方便的__div__()重载
缺点
- 没有用于功能的接口或ABC
- 只覆盖根文件系统
示例
将数据保存到磁盘
老路
def save(base, fragments, data): # `fragments` could contain unsafe paths! if ".." in fragments or "." in fragments: raise ValueError("Unsafe paths!") path = os.path.join(os.path.abspath(base), os.sep.join(fragments)) # Alternatively: path = os.path.join(os.path.abspath(base), *fragments) # I hope that this doesn't fail mid-write! Also, did the directories # exist? I think so, yes. with open(path, "wb") as handle: handle.write(data)
新方法
def save(base, fragments, data): path = base.descendant(fragments) path.parent().makeDirs() path.setContent(data)
更改日志
0.2
- 初始版本