存档操作的通用接口

arlib的Python项目详细描述


arlib:存档操作的公共接口(tar、zip等)

Build StatusDocumentation StatusCoverage Status

目录

基本原理

有时,我们需要处理不同的存档文件。有 几个用于归档文件操作的包/模块,例如, zipfile表示“*.zip”文件,tarfile表示“*.tar.gz”或“*.tar.bz2” 如果我们想支持 项目,可能我们需要执行以下操作:

ifzipfile.is_zipfile(file):ar=zipfile.ZipFile(file)f=ar.open('member-name')# some processingelifzipfile.is_tarfile(file):ar=tarfile.open(file)f=ar.extractfile('member-name')# some processingelse:# other stuffs

上述方法的问题是:

  • 我们需要在任何需要支持的地方重复上面的代码 不同的存档类型。
  • 不同的存档操作模块(例如zipfiletarfile)可能有不同的api约定。

arlib旨在解决上述问题。它抽象了 归档操作的逻辑,并提供单个高级 用户界面。

安装

从pypi安装

pip install arlib

从Anaconda安装

conda install -c liyugong arlib

简单示例

抽象类arlib.archive定义了 处理不同的存档类型,如tar文件、zip文件或 目录。三个具体类arlib.tararchivearlib.ziparchivearlib.dirarchive实现接口 相应地。

打开存档

打开存档文件的最简单方法是使用arlib.open函数

ar=arlib.open('abc.tar.gz','r')

这将自动确定存档的类型并返回 三个引擎类之一的对应对象。如果我们不 想要发动机自动确定机构,我们也可以 通过参数engine指定类,例如

ar=arlib.open('abc.tar.gz','r',engine=ZipArchive)

或者我们可以简单地构造引擎类的对象

ar=arlib.ZipArchive('abc.tar.gz','r')

列出成员名称

属性member_names将返回成员名称列表 包含在存档中,例如

print(ar.member_names)

检查成员

使用方法member_is_dirmember_is_file检查 成员是目录或常规文件

ar=arlib.open('abc.tar','r')ar.member_is_dir('member_name')ar.member_is_file('member_name')

打开成员

使用方法open_member将存档中的成员作为文件打开 对象

withar.open_member('a.txt','r')asf:# do sth by using f as an opened file object

将成员提取到位置

使用方法extract将成员提取到指定位置

ar=arlib.open('abc.tar','r')ar.extract()# extract all the members to the current working directoryar.extract(path='d:/hello',members=['abc.txt','dir1/'])

许可证

arlib包在MIT License

下发布。

文档

https://arlib.readthedocs.io

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

推荐PyPI第三方库


热门话题
用于批量操作的java RESTful API分块响应   java读取在线存储的文本文件   在Java ME中将双精度舍入到小数点后5位   java查找一个数字的最接近因子   java更改JMenuBar的字体   java Kmeans聚类算法运行时间和复杂性   java是否可以阻止try catch返回null   java内容解析器指向具有正确URI的错误表   java Android Kotlin插装测试未被识别为插装测试   java TestNG@Dataprovider   在forloop和print语句中声明变量时发生java错误   java在Android Studio 3中设置JNI