我有一个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上尝试了相同的结果。非常感谢任何帮助。
答案 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