为什么OleFileIO_PL只适用于.doc文件类型而不适用于.docx Python?

时间:2016-08-03 12:49:08

标签: python-2.7

是的,我正在研究一个Python脚本(Python 2.7),它将从OLE文件中提取元数据。我正在使用OleFileIO_PL并且它与OLE文件97 - 2003完美地工作,但是之后它只是说它不是OLE2文件类型。

我可以修改我的代码以支持.doc和.docx吗?与.ppt和.pptx等相同。

提前谢谢

源代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-   

import OleFileIO_PL
import StringIO
import optparse
import sys
import os

def printMetadata(fileName):
   data = open(fileName, 'rb').read()
   f = StringIO.StringIO(data)
   OLEFile = OleFileIO_PL.OleFileIO(f)
   meta = OLEFile.get_metadata()
   print('Author:', meta.author)
   print('Title:', meta.title)
   print('Creation date:', meta.create_time)
   meta.dump()
   OLEFile.close()


def main():
  parser = optparse.OptionParser('usage = -F + Name of the OLE file with the extention For example: python Ms Office Metadata Extraction Script.py -F myfile.docx ')
  parser.add_option('-F', dest='fileName', type='string',\
     help='specify OLE (MS Office) file name')
  (options, args) = parser.parse_args()
  fileName = options.fileName
  if fileName == None:
     print parser.usage
     exit(0)
  else:
     printMetadata(fileName)

if __name__ == '__main__':
  main()

1 个答案:

答案 0 :(得分:0)

要回答您的问题,这是因为较新的MS Office 2007+文件(docx,xl​​sx,xlsb,pptx等)与传统的MS Office 97-2003格式具有完全不同的结构。

它主要是Zip档案中的XML文件集合。因此,通过一些工作,您可以使用标准库中的zipfile和ElementTree提取所需的一切。

如果openxmllib不适合您,您可以尝试其他解决方案:

BTW,OleFileIO_PL已重命名为 olefile ,新项目页面为https://github.com/decalage2/olefile