路径操作库

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

  • 初始版本

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
使用php调用java web服务时无法获取输出   java Netbeans:安装IMlet时出错。。。。仿真器错误   初始化期间Eclipse Juno SR 2中的java堆栈溢出   java在3d中寻找两个任意立方体的交集   代码中显示java“org.openqa.selenium.WebDriverException”错误   java使用AtomicInteger作为可变整数的替代品是一种好的做法吗?   当以编程方式设置背景颜色时,java版面在更新后会自动复制   java将字符串拆分为一个带有数字数据的字符串和另一个带有非数字数据的字符串   带有SSL协议的java AsyncHttpClient   C++服务器HTTN到java NtoHS客户端转换   java内存分配是基于引用类还是实例类?   java使用ProjectLombok安全吗?   grails“java版本”在命令提示符下不工作   java无法使用axis2实例化类型ADBDataSource   在Play Framework 2中进行多文件上传的java示例   java如何将二进制补码字符串转换为负十进制数?   windows 7在Java中获取不正确的操作系统名称   java如何禁用p:commandButton的enter键?   java如何从main方法加载servlet   java如何从imageView获取二进制位图