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

使用Python gzip模块压缩文件后体积反而更大,求问题原因

问题原因与解决方案

嘿,这个问题其实是因为你每次循环都打开并关闭gzip文件导致的,让我给你拆解下:

为什么压缩文件反而更大?

gzip格式的每个独立压缩片段都带有自己的头部和尾部信息。你在循环里每次执行with gzip.open('output.gz', 'ab') as f,相当于把每一行数字都作为一个单独的gzip压缩块写入文件。这些重复的头部/尾部累加起来的开销,加上单条短内容几乎没什么压缩空间(甚至可能因为压缩算法的额外开销反而变大),最终导致整个output.gz的体积比原始文件还大。

正确的写法

把文件打开操作放到循环外面,让所有内容都写入同一个gzip压缩流里,这样gzip可以利用数据的连续性(比如连续递增的数字)进行有效压缩,而且只需要一份头部/尾部:

import gzip

# 一次性打开文件,循环内持续写入
with gzip.open('output.gz', 'wb') as f:
    for idx in range(100000):
        line = (str(idx) + '\n').encode()
        f.write(line)

额外说明

如果后续需要向已有的gzip文件追加内容,确实可以用'ab'模式,但要注意尽量减少打开/关闭文件的次数——比如打开一次文件,完成所有追加操作后再关闭,而不是每次追加都重新打开。这样能避免生成大量独立的压缩片段,保证压缩效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:20:11