Python-pptx ".ppt"处理的解决方法

4
我正在尝试从.ppt和.pptx文件中提取文本。我已经成功地使用python-pptx来处理.pptx文件,但是根据其文档,“来自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()函数,但我需要一个演示文稿项目才能这样做。由于我必须先使用无法处理.ppt文件的python-pptx,所以我不能这样做。
  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个回答

1

您的方法是我会采用的方式,也许可以在启动python-pptx处理之前批量处理。我可能会使用IronPython来访问MS API,但本质上是相同的方法。

您可以尝试使用一个Python库来代替LibreOffice或Open Office库(例如PyOO)。这可能具有不需要Windows的优点,但它仍然基本上是“脚本化”正在运行的Office应用程序来完成工作;它不是直接的库接口。这意味着,如果您想要可靠地在服务器端运行,那么它可能不太适合。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接