zlib解压缩器/ zipfile中的MemoryError

时间:2016-06-07 12:37:44

标签: python zlib

我使用zipfile模块解压缩zip存档。对于其中一个文件,进程在zipfile.py的第682行失败并出现MemoryError异常:

data = self._decompressor.decompress(
    self._unconsumed,
    max(n - len_readbuffer, self.MIN_READ_SIZE)
)

变量的值非常正常(n == MAX_Nlen_readbuffer == 0MIN_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是我想要获取的文件的路径。

0 个答案:

没有答案