存档操作的通用接口
arlib的Python项目详细描述
arlib:存档操作的公共接口(tar、zip等)
目录
基本原理
有时,我们需要处理不同的存档文件。有 几个用于归档文件操作的包/模块,例如, 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
上述方法的问题是:
- 我们需要在任何需要支持的地方重复上面的代码 不同的存档类型。
- 不同的存档操作模块(例如zipfile和 tarfile)可能有不同的api约定。
arlib旨在解决上述问题。它抽象了 归档操作的逻辑,并提供单个高级 用户界面。
安装
从pypi安装
pip install arlib
从Anaconda安装
conda install -c liyugong arlib
简单示例
抽象类arlib.archive定义了 处理不同的存档类型,如tar文件、zip文件或 目录。三个具体类arlib.tararchive, arlib.ziparchive和arlib.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_dir和member_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
下发布。