【发布时间】:2013-07-15 21:27:45
【问题描述】:
我有一个 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 上都试过,结果相同。非常感谢任何帮助。
【问题讨论】:
-
你能发布 zip 文件(或它的链接)吗? code that leads up to this error 非常简单;它检查文件头是否声明了多个磁盘或文件的磁盘号是否为零。
-
感谢 phihag。不幸的是,我无法发布该文件,因为它包含机密的客户数据。
-
好吧,你能生成一个包含大量测试数据但仍然显示问题的 zip 文件吗?
-
可能更多地取决于用于创建 .zip 的软件。我刚刚遇到了来自客户的 500MB .zip 的问题。打开包装并重新包装(显然使用与我的客户不同的 zip 工具)并且它可以工作。由于压缩较少,重新打包的文件更大。所以,大小似乎并不重要。
-
python3.7可以使用文件运行,而python3.6不能用于我。
标签: python-2.7 zipfile