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

如何使用Python实现与zlib-flate命令等效的压缩文件解压功能

用Python标准库自带的zlib模块就能实现和zlib-flate -uncompress完全一致的解压效果,核心是要匹配zlib-flate默认处理原始deflate流的行为,配置正确的解压参数即可。

完整可执行脚本(支持大文件,内存占用低)

直接对应你给出的命令行功能,接收输入压缩文件路径和输出文件路径作为参数:

import zlib
import sys

def main():
    if len(sys.argv) != 3:
        print(f"用法: {sys.argv[0]} <输入压缩文件路径> <输出解压文件路径>")
        sys.exit(1)
    
    decompressor = zlib.decompressobj(wbits=-15)
    with open(sys.argv[1], "rb") as f_in, open(sys.argv[2], "wb") as f_out:
        # 分块读取避免大文件占用过多内存
        for chunk in iter(lambda: f_in.read(4096), b""):
            f_out.write(decompressor.decompress(chunk))
        # 写入解压缓冲中剩余的数据
        f_out.write(decompressor.flush())

if __name__ == "__main__":
    main()

运行方式:python3 脚本名.py inputfile outfile

简化版本(适合小文件)

如果你的压缩文件体积不大,可以直接一次性读写:

import zlib

# 读取压缩文件内容
with open("inputfile", "rb") as f:
    compressed_data = f.read()
# 解压,wbits=-15对应处理无zlib头/校验尾的原始deflate流
decompressed_data = zlib.decompress(compressed_data, wbits=-15)
# 写入解压结果
with open("outfile", "wb") as f:
    f.write(decompressed_data)

关键参数说明

  • wbits=-15是匹配zlib-flate默认行为的核心配置:zlib模块默认的wbits值为15,会校验标准zlib格式的文件头和尾部校验和,而zlib-flate默认处理的是没有头和校验尾的原始deflate压缩流,需要传入负值的wbits跳过校验。如果运行时报校验错误,可以尝试将wbits=-15改为wbits=15适配带标准zlib头的压缩文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:54:02