12

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

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

这是我的代码:

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 上都试过,结果相同。非常感谢任何帮助。

4

2 回答 2

15

尽管我使用的是 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:

希望这可以帮助

于 2015-02-02T13:54:36.407 回答
2

快速修复,安装 zipfile38 使用:

pip install zipfile38

并像以前一样在代码中使用它

import zipfile38 as zipfile
#your code goes here
于 2021-01-15T15:00:08.497 回答