是的,我正在研究一个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()
答案 0 :(得分:0)
要回答您的问题,这是因为较新的MS Office 2007+文件(docx,xlsx,xlsb,pptx等)与传统的MS Office 97-2003格式具有完全不同的结构。
它主要是Zip档案中的XML文件集合。因此,通过一些工作,您可以使用标准库中的zipfile和ElementTree提取所需的一切。
如果openxmllib不适合您,您可以尝试其他解决方案:
BTW,OleFileIO_PL已重命名为 olefile ,新项目页面为https://github.com/decalage2/olefile