在嵌入zip的zip上使用zipfile.is_zipfile

时间:2019-05-03 10:56:56

标签: python zipfile

文件上的

is_zipfile可以正确识别zip文件。但是,当处理由zipfile.open生成的类似文件的对象时,则不会。有什么方法可以使它正常工作,还是必须在使用之前将文件提取到一个临时位置?

import zipfile

file = open(r'c:\temp\test.xlsx', 'rb')
if zipfile.is_zipfile(file): # only works with native files, not file-like
    print('Zip') # this line is executed, as expected
else:
    print('Not zip')

zip = zipfile.ZipFile(open(r'c:\temp\test.zip', 'rb'))
file = zip.open('test.xlsx', 'r')
if zipfile.is_zipfile(file): # only works with native files, not file-like
    print('Zip')
else:
    print('Not zip') # this line is executed. WHY?

我的输出是:

Zip
Not zip

我的预期结果是两者都应作为zip文件进行测试。它适用于本机文件,但不能作为zip文件的一部分。

1 个答案:

答案 0 :(得分:1)

不是答案/解决方法,但是一种解决方法是将数据加载到内存中。

DSPPGMREF

似乎zipfile.open生成的文件状文件不足以使zipfile.is_zipfile能够使用。