2017-04-12 5 views
2

Ich versuche derzeit, Text aus .ppt und .pptx-Dateien zu ziehen. Ich verwende erfolgreich python-pptx, um .pptx-Dateien zu verarbeiten, ABER gemäß its documentation, ".ppt-Dateien von PowerPoint 2003 und früher werden nicht funktionieren."python-pptx ".ppt" Handhabung arbeiten um

Wenn eine Itemvorgabe Erstellen diese Codezeile verwenden:

`prs = Presentation("Filepath\\presentation.ppt")` 

ich die folgende Fehlermeldung:

`Traceback (most recent call last): 
...shortened for brevity.... 
KeyError: "no relationship of type 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument' in collection"` 

Ich glaube, dass dieser Fehler auftritt, weil Python-pptx nicht verarbeiten kann PPT-Dateien. Ich habe versucht, diese Situation drei Möglichkeiten zur Behebung:

  1. ich die .save() Funktion im Zusammenhang mit Python-pptx benutzen wollte, aber ich müsste eine Präsentation Artikel machen, das zu tun. Ich kann das nicht tun, weil ich python-pptx verwenden müsste, das die .ppt-Datei an erster Stelle nicht behandeln kann.
  2. Nutzen Sie os.rename(src, dst)
    • Dies tat nicht Arbeit. Das Umbenennen der Datei funktioniert nicht wie "Speichern unter", wodurch die Datei beschädigt wird.
  3. I verwendet win32com die Powerpoint-Anwendung zu öffnen, die PPT-Datei öffnen und dann die Datei als PPTX speichern und schließen sowohl die Datei und Anwendung.

    • Diese Methode funktionierte ABER es ist wirklich "klobig." (Siehe Code unten.)

    Application = win32com.client.Dispatch("PowerPoint.Application") Application.Visible = True Presentation = Application.Presentations.Open("Filepath\\presentation.ppt") Presentation.Saveas("Filepath\\presentation.pptx") Presentation.Close() Application.Quit()

Meine Frage an die Community ist, ob es eine anspruchsvollere oder elegante Art und Weise, in der mein Dilemma zu lösen. Mein Dilemma ist, dass ich in der Lage sein möchte, Text von .ppt-Dateien zu analysieren, und python-pptx behandelt diese Dateitypen nicht.

Antwort

1

Ihre Vorgehensweise ist die Art, wie ich es tun würde, vielleicht als ein Batch-Prozess vor dem Start python-pptx Verarbeitung. Ich würde wahrscheinlich IronPython für den Zugriff auf die MS-API verwenden, aber es ist im Wesentlichen der gleiche Ansatz.

Es ist möglich, dass Sie dies mit einer Python-Bibliothek tun können, die die LibreOffice- oder Open Office-Bibliotheken als Alternative adressiert (PyOO ist ein Beispiel). Dies kann den Vorteil haben, Windows nicht zu benötigen, aber es wird immer noch im Wesentlichen eine laufende Office-Anwendung "scripten", um die Arbeit zu erledigen; es ist keine direkte Bibliotheksschnittstelle. Dies bedeutet, dass es wahrscheinlich nicht gut geeignet ist, um serverseitig zuverlässig zu laufen, wenn Sie danach suchen.