python-pptx“.ppt”处理工作

时间:2017-04-12 19:43:35

标签: python python-3.x powerpoint win32com python-pptx

我目前正在尝试从.ppt和.pptx文件中提取文本。我成功使用python-pptx来处理.pptx文件,但是根据its documentation,“PowerPoint 2003及更早版本中的.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"`

我认为发生此错误是因为python-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()

  4. 我向社会提出的问题是,是否有更复杂或更优雅的方式可以解决我的困境。我的困境是我希望能够解析.ppt文件和python-pptx中的文本并不能处理这些文件类型。

1 个答案:

答案 0 :(得分:1)

您的方法就是我这样做的方式,也许是在开始python-pptx处理之前作为批处理过程。我可能会使用IronPython来访问MS API,但它基本上是相同的方法。

你可以用Python库来解决LibreOffice或Open Office库的问题(PyOO就是一个例子)。这可能具有不需要Windows的优点,但它仍然基本上“编写”正在运行的Office应用程序来编写工作;它不是一个直接的库接口。这意味着它可能不太适合可靠的运行服务器端,如果这就是你所追求的。