python - 在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
文件(块设备的导出;通常最后有空白空间,因此压缩效果很好)。
解决方案
这会将整个文件读入内存,如果您没有 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)
推荐阅读
- node.js - 分段错误(核心转储)错误 139(Webpack 5.11.1)
- http-live-streaming - HLS FLAC 音频流
- c - 如何在c中添加布尔值?
- angular - 在角度引导日期格式化程序服务中找不到模块问题
- c++ - 使用 Stack 和 C++ 语言显示老鼠迷宫最终路径坐标
- python - 如何使用 SpaCy 更改自定义 NER 模型再训练的训练数据格式?
- kernel - 为什么 Linux 内核代码是 100Hz 但显示器刷新率可以是 60Hz
- javascript - 使用 Nodejs 构建推荐系统
- javascript - 如何在 p5js 中设置障碍,但您只能通过特定的门进入
- javascript - 将音频 numpy 数组发送到前端 Javascript 以播放声音?