You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python zipfile库结合LZMA压缩时,如何设置有效压缩级别?

如何为Python创建的ZIP文件设置LZMA压缩级别

Python标准库的zipfile模块文档明确说明,使用LZMA压缩时compresslevel参数不会生效。要自定义LZMA压缩级别,需要手动创建LZMA压缩流并写入ZIP文件,具体实现如下:

实现思路与步骤

  • 导入zipfile和lzma模块
  • 创建ZipFile对象时指定压缩方式为ZIP_LZMA
  • 不直接使用zipfile的write()方法,而是通过open()获取ZIP内的文件句柄,用lzma.LZMAFile包装该句柄并指定压缩级别
  • 将源文件内容写入包装后的LZMA压缩流

示例代码

import zipfile
import lzma
import os

def add_file_with_lzma_level(zip_path, file_path, compress_level=6):
    with zipfile.ZipFile(zip_path, 'a', compression=zipfile.ZIP_LZMA) as zf:
        arcname = os.path.basename(file_path)
        with zf.open(arcname, 'w') as zf_file:
            # preset参数对应LZMA压缩级别,范围0-9,数值越高压缩率越高、耗时越长
            with lzma.LZMAFile(zf_file, mode='w', preset=compress_level) as lzma_file:
                with open(file_path, 'rb') as src_file:
                    lzma_file.write(src_file.read())

# 使用示例:将test.txt添加到test.zip,设置最高压缩级别9
add_file_with_lzma_level('test.zip', 'test.txt', compress_level=9)

相关参考(针对tarfile)

如果是tarfile结合LZMA压缩,可直接在创建TarFile对象时通过preset参数指定压缩级别:

import tarfile

with tarfile.open('test.tar.xz', 'w:xz', preset=9) as tf:
    tf.add('test.txt')

内容的提问来源于stack exchange,提问作者ideasman42

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 02:43:23