我使用zipfile模块解压缩zip存档。对于其中一个文件,进程在zipfile.py
的第682行失败并出现MemoryError异常:
data = self._decompressor.decompress(
self._unconsumed,
max(n - len_readbuffer, self.MIN_READ_SIZE)
)
变量的值非常正常(n == MAX_N
,len_readbuffer == 0
,MIN_READ_SIZE == 4096
),因此传递给解压缩器的参数是MAX_N或1 << 31 - 1
。解压缩zip存档中的所有其他文件都没有问题。
我尝试过ZipFile.testzip()
,它会返回None
。其他工具(Total Commander,7zip)可以毫无问题地读取和提取有问题的文件。
档案由我们的专有包装工具制作,但所有其他档案及其内容似乎都没问题。
我在Windows上使用Python 2.7.11。
如果有任何建议可以尝试下一步,我将不胜感激。
对于记录,这是我用来访问zipfile的代码:
def GetFileContentFromZip(file_source, f):
s = ''
with file_source.open(f) as fo:
s = fo.read()
return s
file_source
是我已经打开的ZipFile,f
是我想要获取的文件的路径。