2017-04-12 88 views
2

我目前正試圖從.ppt和.pptx文件中提取文本。我成功地使用python-pptx來處理.pptx文件,但是根據its documentation,「PowerPoint 2003及更早版本中的.ppt文件將無法工作。」python-pptx「.ppt」處理工作

使用此行代碼創建演示項目當:

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

我收到以下錯誤:

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

我認爲,這個錯誤發生,因爲蟒蛇,PPTX無法處理.ppt文件。我試圖糾正這種情況有三種方式:

  1. 我想用與Python-PPTX相關的.save()功能,但我會做一個介紹的項目做到這一點。我不能這樣做,因爲我不得不使用python-pptx,它首先無法處理.ppt文件。
  2. 利用os.rename(src, dst)
    • 這並沒有工作。重命名該文件與「另存爲」不同,因此會使文件損壞。
  3. 我以前win32com打開PowerPoint應用程序,打開.ppt文件,然後將該文件保存爲.PPTX,並同時關閉文件和應用程序。

    • 這種方法的工作,但它真的很笨重。 (請參見下面的代碼。)

    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()

我的問題給社會是否有在解決我的困境更復雜的或優雅的方式。我的困境是,我希望能夠解析.ppt文件中的文本,而python-pptx不處理這些文件類型。

回答

1

您的方法是我會這樣做的方式,也許是在開始python-pptx處理之前作爲批處理過程。我可能會使用IronPython來訪問MS API,但它基本上是相同的方法。

您可以使用Python庫來解決LibreOffice或Open Office庫(PyOO是一個示例)。這可能具有不需要Windows的優勢,但它仍然基本上是「運行」Office應用程序來執行工作;它不是一個直接的庫接口。這意味着它可能不適合可靠運行的服務器端,如果這就是你所追求的。