【发布时间】:2017-03-28 04:15:01
【问题描述】:
我目前正在使用 python 2.7 的 ZipFile。我在压缩多个文件以发送给用户时遇到了内存问题。
当我有代码时:
fp = open('myzip.zip', 'w')
archive = zipfile.ZipFile(fp, 'w', zipfile.ZIP_DEFLATED)
for filepath in filepaths:
archive.write(filepath)
archive.close()
Python 是否会在某个时候将所有这些文件加载到内存中?我本来希望 Python 将文件的内容流式传输到 zip 中,但我不确定情况是否如此。
【问题讨论】:
-
看起来模块一次将 8 * 1024 个字符读入内存 hg.python.org/cpython/file/2.7/Lib/zipfile.py#l1179
-
ZipFile.write()不会消耗太多内存。如前所述,它使用适度的块大小,并在使用时释放它们。程序本身是在变大还是内存问题是别的意思?操作系统缓存写入,因此在操作系统开始提交数据之前它会很快。然后事情可能会陷入困境。 -
有趣,好吧,这可能是一个红鲱鱼
标签: python python-2.7 zip