Python zipfile模块错误地认为我有一个跨越多个磁盘的zipfile,抛出了BadZipfile错误

时间:2013-07-15 21:27:46

标签: python-2.7 zipfile

我有一个1.4GB的zip文件,我试图连续产生每个成员。 zipfile模块不断抛出BadZipfile异常,说明

  

“zipfile.BadZipfile:不支持跨多个磁盘的zip文件”。

这是我的代码:

import zipfile

def iterate_members(zip_file_like_object):
  zflo = zip_file_like_object
  assert zipfile.is_zipfile(zflo) # Here is where the error happens.
  # If I comment out the assert, the same error gets thrown on this next line:
  with zipfile.ZipFile(zflo) as zip:
    members = zip.namelist()
    for member in members:
      yield member

fn = "filename.zip"
iterate_members(open(fn, 'rb'))

我正在使用Python 2.7.3。我在Windows 8和ubuntu上尝试了相同的结果。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:10)

虽然我正在使用python 3.4

,但我在类似的文件上得到了同样的错误

能够通过编辑zipfile.py源代码中的第205行来修复它:

if diskno != 0 or disks != 1:
    raise BadZipFile("zipfiles that span multiple disks are not supported")

为:

if diskno != 0 or disks > 1:

希望这有帮助

答案 1 :(得分:1)

快速修复,使用以下方法安装 zipfile38:

pip install zipfile38

并在与之前相同的代码中使用它

import zipfile38 as zipfile
#your code goes here