存档操作的通用接口

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使用哪个地图/集合?   bluej Java:计算税   由于性能问题,java双精度字符串替代方案   java Eclipse CDT生成设置因重新启动而丢失   如何在java控制台中显示字节流值   java获取url地址,其中是包含我的页面的iframe   java 403禁止的spring启动API调用错误?   如果一个方法返回true,java将停止计时器   使用JavaNIO获取文件创建日期   在Java中从整数转换为二进制时保留整个字节的字符串   java AspectJ&Maven警告:“未应用……中定义的建议?”   java为什么我得到3,我不应该得到+7   java当一个方法包含多个返回的if语句时,如何从该方法中获取返回值?   在运行时循环java(scan.nextLine()!="$")   java配置休眠。cfg。春天的xml   java使用HtmlUnit模拟用户,错误   java CLI如何持续检查更改   java最大素因子(返回)