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文件的一部分。
答案 0 :(得分:1)
不是答案/解决方法,但是一种解决方法是将数据加载到内存中。
DSPPGMREF
似乎zipfile.open生成的文件状文件不足以使zipfile.is_zipfile能够使用。