2016-08-03 5 views
1

richtig, also arbeite ich an einem Python-Skript (Python 2.7), das die Metadaten aus OLE-Dateien extrahieren wird. Ich verwende OleFileIO_PL und es funktioniert perfekt Datei mit OLE-Dateien 97 - 2003, aber jeder später, dass es nur besagt, dass es kein OLE2-Dateityp ist.Warum OleFileIO_PL nur mit DOC-Dateitypen und nicht DOCX Python funktioniert?

Wie kann ich meinen Code so ändern, dass er sowohl .doc als auch .docx unterstützt? Das Gleiche gilt für PPT- und PPTX usw.

Vielen Dank im Voraus

Source Code:

#!/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

Eine schnelle Suche findet [openxmllib] (https://pypi.python.org/pypi/openxmllib/1.0.7), die aussieht wie es für die neueren helfen könnte Formate. – glibdud

+0

Vielen Dank Ich habe versucht, openxmllib nicht zu lügen Ich hatte eine Menge Probleme bei der Installation, aber ich habe es geschafft. Jetzt, da es installiert ist, werde ich mir die Dokumentation ansehen und ein Metadaten-Extraktionsskript schreiben. Sollte hoffentlich funktionieren. Danke für Ihre Hilfe. –

Antwort

0

Ihre Frage zu beantworten, ist dies, weil die neueren MS Office 2007+ Dateien (docx, xlsx , xlsb, pptx usw.) haben eine völlig andere Struktur als die älteren MS Office 97-2003-Formate.

Es ist hauptsächlich eine Sammlung von XML-Dateien in einem Zip-Archiv. Mit ein wenig Arbeit können Sie also alles, was Sie benötigen, mit zipfile und ElementTree aus der Standardbibliothek extrahieren.

Wenn openxmllib nicht für Sie arbeiten, können Sie andere Lösungen versuchen:

BTW, OleFileIO_PL wurde umbenannt in olefile und die neue Projektseite ist https://github.com/decalage2/olefile