首页 > 解决方案 > 在python中使用gzip压缩大文件

问题描述

我搜索了如何在python中压缩文件,并找到了一个基本上如下所述的答案:

with open(input_file, 'rb') as f_in, gzip.open(output_file, 'wb') as f_out:
    f_out.write(f_in.read())

它适用于 1GB 的文件。但我计划将文件压缩到 200 GB。

有什么我需要考虑的因素吗?我应该以不同的方式处理这样的大文件吗?

这些文件是二进制.img文件(块设备的导出;通常最后有空白空间,因此压缩效果很好)。

标签: pythongzip

解决方案


这会将整个文件读入内存,如果您没有 200G 可用空间,则会给您带来问题!

您也许可以通过 gzip 简单地通过管道传输文件,避免使用 Python 来处理分块工作

% gzip -c myfile.img > myfile.img.gz

否则,您应该分块读取文件(选择大块大小可能会带来一些好处)

BLOCK_SIZE = 8192

with open(myfile, "rb") as f_in, gzip.open(output_file, 'wb') as f_out:
    while True:
        content = f_in.read(BLOCK_SIZE)
        if not content:
            break
        f_out.write(content)

推荐阅读