在 Python 中,可以使用内置的 zlib 模块或第三方库(如 pyflate)来实现 DEFLATE 压缩,以下是几种常见的方法:

方法 1:使用 zlib 模块(推荐)
zlib 是 Python 标准库的一部分,支持 DEFLATE 压缩(通过 zlib.compress() 和 zlib.decompress())。
压缩示例
import zlib
# 原始数据
data = b"Hello, world! This is a test string for DEFLATE compression."
# 压缩数据(默认使用 zlib 的 DEFLATE 封装)
compressed_data = zlib.compress(data)
print(f"原始数据: {data}")
print(f"压缩后数据: {compressed_data}")
print(f"压缩率: {len(compressed_data) / len(data) * 100:.2f}%")
解压示例
# 解压数据
decompressed_data = zlib.decompress(compressed_data)
print(f"解压后数据: {decompressed_data}")
纯 DEFLATE 压缩(无 zlib 头)
如果需要纯 DEFLATE 格式(如用于 PNG 或 ZIP 文件),可以指定 wbits=-15:
# 纯 DEFLATE 压缩(无 zlib 头) pure_deflate = zlib.compress(data, wbits=-15) # 解压时也需要指定 wbits=-15 decompressed = zlib.decompress(pure_deflate, wbits=-15)
方法 2:使用 gzip 模块
gzip 模块也基于 DEFLATE,但会添加 gzip 头和尾,适用于 .gz 文件。
压缩示例
import gzip
# 压缩数据
compressed_data = gzip.compress(data)
print(f"压缩后数据: {compressed_data}")
解压示例
decompressed_data = gzip.decompress(compressed_data)
print(f"解压后数据: {decompressed_data}")
方法 3:使用 pyflate 库(第三方)
pyflate 是一个纯 Python 实现的 DEFLATE 库,适合学习或特殊需求。

安装
pip install pyflate
压缩示例
from pyflate import compress
compressed_data = compress(data)
print(f"压缩后数据: {compressed_data}")
解压示例
from pyflate import decompress
decompressed_data = decompress(compressed_data)
print(f"解压后数据: {decompressed_data}")
性能对比
| 方法 | 特点 | 适用场景 |
|---|---|---|
zlib |
标准库,支持纯 DEFLATE 和 zlib | 通用压缩(如网络传输) |
gzip |
带头尾的 DEFLATE | 生成 .gz 文件 |
pyflate |
纯 Python 实现 | 学习或特殊需求 |
注意事项
- 压缩级别:
zlib.compress()默认压缩级别为6,可通过level参数调整(0-9,9最高压缩率但最慢)。zlib.compress(data, level=9) # 最高压缩率
- 内存优化:大文件可分块压缩:
def compress_large_file(input_path, output_path): with open(input_path, 'rb') as f_in, open(output_path, 'wb') as f_out: compressor = zlib.compressobj() while chunk := f_in.read(8192): f_out.write(compressor.compress(chunk)) f_out.write(compressor.flush()) - 错误处理:确保数据是字节串(
bytes),否则需先编码:data = "Hello".encode('utf-8') # 转为 bytes
- 推荐使用
zlib,它高效且支持纯 DEFLATE 格式。 - 如果需要生成
.gz文件,用gzip。 pyflate适合学习或纯 Python 环境。
根据需求选择合适的方法即可!
