当前位置: 首页 > 工具软件 > Pythonpy > 使用案例 >

Python压缩、减压7z文件

史旺
2023-12-01

py7zr简介

py7zr 是一个由Python编程语言编写的7zip存档压缩、解压缩、加密和解密的库和实用程序。要求的最低版本是Python 3.6。

支持的算法:

  • compress
    • LZMA2
    • LZMA
    • Bzip2
    • Deflate
    • Copy
    • ZStandard
    • Brotli
    • Deflate64 (Decompression only)
    • PPMd (Experimental)
  • crypt
    • 7zAES
  • Filters
    • Delta
    • BCJ(X86,ARMT,ARM,PPC,SPARC,IA64)

安装

可以直接使用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')
 类似资料: