python-pptx“.ppt”处理变通
python-pptx ".ppt" handling work around
我目前正在尝试从 .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)
- 这 没有 工作。重命名文件与 'save as' 不同,因此会使文件损坏。
我用win32com
打开PowerPoint应用程序,打开.ppt文件,然后将文件另存为.pptx,关闭文件和应用程序。
- 此方法有效,但它确实 'clunky.'(请参阅下面的代码。)
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-pptx
处理之前作为批处理过程。我可能会使用 IronPython 来访问 MS API,但它本质上是相同的方法。
您可以使用 Python 库来执行此操作,该库将 LibreOffice 或 Open Office 库作为替代方案(例如 PyOO)。这可能具有不需要 Windows 的优点,但它本质上仍然是 "scripting" 一个 运行 Office 应用程序来完成工作;它不是直接的库界面。这意味着它可能不太适合可靠的 运行 服务器端,如果这就是您所追求的。
我目前正在尝试从 .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)
- 这 没有 工作。重命名文件与 'save as' 不同,因此会使文件损坏。
我用
win32com
打开PowerPoint应用程序,打开.ppt文件,然后将文件另存为.pptx,关闭文件和应用程序。- 此方法有效,但它确实 'clunky.'(请参阅下面的代码。)
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-pptx
处理之前作为批处理过程。我可能会使用 IronPython 来访问 MS API,但它本质上是相同的方法。
您可以使用 Python 库来执行此操作,该库将 LibreOffice 或 Open Office 库作为替代方案(例如 PyOO)。这可能具有不需要 Windows 的优点,但它本质上仍然是 "scripting" 一个 运行 Office 应用程序来完成工作;它不是直接的库界面。这意味着它可能不太适合可靠的 运行 服务器端,如果这就是您所追求的。