写入时Python zipfile挂起

Posted

技术标签:

【中文标题】写入时Python zipfile挂起【英文标题】:Python zipfile hangs when writing 【发布时间】:2010-01-21 16:11:17 【问题描述】:

我正在尝试使用 Python 中的 zipfile 模块来创建简单的 zip 文件:

import zipfile

files = ('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
zip_file_name = 'zipfile_test.zip'

zfh = zipfile.ZipFile(zip_file_name, 'w')
for file in files:
  print 'Archiving file %s' % file
  zfh.write(zip_file_name)
zfh.close()

文件 a-h 在我的工作目录中,为空,使用touch a b c d e f g h 进行测试。

将前 7 个项目添加到 zip 文件后,它会挂在最后一个项目上,但会继续写入 zip 文件,直到空间耗尽。这发生在我测试过的两个系统上,一个使用 Python 2.4.3,另一个使用 Python 2.6.2。如果文件数少于 6 个或 7 个,则创建 zip 文件没有任何问题。否则,它会在 7-15 个文件之间失败并开始将垃圾写入文件末尾。我试过改变:

  zfh.write(zip_file_name)

到:

  zfh.write(zip_file_name, zip_file_name, zipfile.ZIP_DEFLATED)

这有时让我可以多写几个文件,但也不可避免地会失败。

我做错了什么?

【问题讨论】:

【参考方案1】:

您正在将 zip 文件放入 zip 文件中:

zfh.write(zip_file_name)

应该是:

zfh.write(file)

【讨论】:

这种错误如果没有一双新的眼睛是很难发现的。

以上是关于写入时Python zipfile挂起的主要内容,如果未能解决你的问题,请参考以下文章

Python - 将文件夹及其内容写入 ZipFile

在python中将文本写入zipfile

Python:如何创建一个 zipfile 并将其写入多个目录/文件夹?

python 将文件夹中的文件递归写入ZIPFile对象

zipfile 写入在 gcloud 中找不到文件

Python,在内存中写入 zip 到文件