【发布时间】:2017-09-08 18:03:19
【问题描述】:
我目前正在尝试从 .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 文件。我尝试了三种方法来解决这种情况:
- 我想使用与 python-pptx 关联的
.save()函数,但我必须制作一个演示项目才能做到这一点。我不能这样做,因为我必须首先使用无法处理 .ppt 文件的 python-pptx。 - 使用
os.rename(src, dst)- 这没有工作。重命名文件与“另存为”不同,因此会使文件损坏。
-
我使用
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 不处理这些文件类型。
【问题讨论】:
标签: python python-3.x powerpoint win32com python-pptx