3.8. 使用 python-libarchive-c 模块

用于libarchive的Python接口。 它使用标准的模块动态加载和访问C库。

python-libarchive-c 目前使用python 2.7、3.4、3.5和3.6进行测试。

python-libarchive-c可能无法与过时的libarchive版本(如MacOS中包含的版本)正常工作。在这种情况下,您可以安装最新版本的libarchive(例如,使用brew在MacOS上安装libarchive)。

sudo apt install python3-libarchive-c

3.8.1. 创建压缩文件

>>> import os
>>> if os.path.exists("xx_test.tar.gz"): os.remove('xx_test.tar.gz')
>>> with open('xx_text.txt', 'w') as fo:
>>>     fo.write('Hello')
>>> !ls xx*
xx_text.txt
>>> import libarchive
>>> with libarchive.file_writer('xx_test.tar.gz', 'ustar', 'gzip') as archive:
>>>     archive.add_files('xx_text.txt')
>>> !ls xx*
xx_test.tar.gz      xx_text.txt

3.8.2. 解压文件

>>> if os.path.exists('xx_text.txt'): os.remove('xx_text.txt')
>>> libarchive.extract_file('xx_test.tar.gz')
>>> !ls xx*
xx_test.tar.gz      xx_text.txt

3.8.3. 查看信息

以下程序查看压缩文件中的内容:

>>> with libarchive.file_reader('xx_test.tar.gz') as reader:
>>>     for e in reader:
>>>         # (The entry evaluates to a filename.)
>>>         # print("> %s" % (e))
>>>         print(e.name)
>>>
xx_text.txt