为什么zipfile.is_zipfile在xlsx文件上返回True?

我正在使用is_zipfile在提取之前检查它是否为is_zipfile 。 但是该方法从一个StringIO对象的Excel文件返回True。 我正在使用Python 2.7。 有谁知道如何解决这一问题? 使用is_zipfiile可靠吗? 谢谢。

从微软的XLSX结构概述文档引用,

工作簿数据包含在符合开放包装规范的ZIP包中

所以, .xlsx文件实际上只是zip文件。 如果您不想将它们视为zip文件,则可能必须使用这样的if条件排除

 if os.path.splitext(filename)[1] != ".xlsx" and zipfile.is_file(filename): 

这是因为xlsx实际上是一个有效的zip文件。

也可以看看:

  • Office Open XML
  • Microsoft Office XML格式