py7zr
是一个由Python编程语言编写的7zip存档压缩、解压缩、加密和解密的库和实用程序。要求的最低版本是Python 3.6。
支持的算法:
可以直接使用pip进行安装py7zr:
pip install py7zr
或者使用conda:
conda install -c conda-forge py7zr
下面是一段代码片段,介绍如何解压文档中的一些文件:
import py7zr
archive = py7zr.SevenZipFile('sample.7z', mode='r')
archive.extractall(path="/tmp")
archive.close()
py7zr (v0.6及更高版本) 也提供了上下文管理,所以可以使用 with
代码块:
import py7zr
with py7zr.SevenZipFile('sample.7z', mode='r') as z:
z.extractall()
with py7zr.SevenZipFile('target.7z', 'w') as z:
z.writeall('./base_dir')
py7zr 还支持提取单个或通过 extract(targets=[‘file path’])
选定的多个文件。注意:如果只指定文件而不指定父目录,将会提取失败。
import py7zr
import re
filter_pattern = re.compile(r'<your/target/file_and_directories/regex/expression>')
with SevenZipFile('archive.7z', 'r') as archive:
allfiles = archive.getnames()
selective_files = [f for f in allfiles if filter_pattern.match(f)]
archive.extract(targets=selective_files)
py7zr(v0.6及更高版本)支持提取受密码保护的归档文件。
import py7zr
with py7zr.SevenZipFile('encrypted.7z', mode='r', password='secret') as z:
z.extractall()
下面是一段如何生成归档文件的事例代码。
import py7zr
with py7zr.SevenZipFile('target.7z', 'w') as archive:
archive.writeall('/path/to/base_dir', 'base')
要创建加密存档,请传递密码。
import py7zr
with py7zr.SevenZipFile('target.7z', 'w', password='secret') as archive:
archive.writeall('/path/to/base_dir', 'base')
要使用zstandard等算法创建存档,可以使用自定义过滤器调用。
import py7zr
my_filters = [{"id": py7zr.FILTER_ZSTD}]
another_filters = [{"id": py7zr.FILTER_ARM}, {"id": py7zr.FILTER_LZMA2, "preset": 7}]
with py7zr.SevenZipFile('target.7z', 'w', filters=my_filter) as archive:
archive.writeall('/path/to/base_dir', 'base')