【问题标题】:Open a Word Document Using Python [duplicate]使用 Python 打开 Word 文档 [重复]
【发布时间】:2023-12-05 03:42:01
【问题描述】:

我正在尝试在 Python 中自动打开一个 Word 文档。我对编程很陌生,听说这个网站帮助了遇到困难的人。

我查看了各种问题并发现了这一点:

DummyFile = path_to_docx
with open(DummyFile) as f:
    source_stream = io(f.read())
document = doc(source_stream)
source_stream.close()

但是当我运行它时,我得到:

 UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 74: character maps to <undefined>

看来这段代码不是我想要的。我相信它正在尝试读取我的文档并将其放入变量中。不是我想要的。我想要该命令,当执行时,将在 Microsoft Word 中打开 word 文档

预期结果:

Word 文档在 Microsoft Word 中打开,如下所示:

【问题讨论】:

  • 这是一个很好的初学者问题。您已经清楚地阅读了有关如何询问的说明,并且在执行这些说明方面做得很好。令人惊讶的是,这种情况很少见。欢迎来到 SO!
  • 你说 "Open a Word Document using Python" (也就是说,听起来你的意思是从 python 中访问文档,使用一些包),但是 你真的想要执行“使用 Python 在 MS-Word 中打开文档”(即调用操作系统启动运行 MS-Word 的进程并在其中打开文档)

标签: python python-3.x docx


【解决方案1】:

在 Windows 上,您可以使用os.startfile

import os
os.startfile('C:\\Path\\To\\file.docx')

对于其他操作系统,请参阅此答案: https://*.com/a/435669/101087

【讨论】:

    【解决方案2】:

    您在问题中发布的代码是将 Word 文件作为您可以使用的对象读取到您的 Python 代码中,而不是启动 Word 应用程序。

    您需要做的是滥用 Windows 的操作系统启动命令,这将在 Windows shell 也注册了该扩展名的任何应用程序中启动给定文件,例如...

    os.system('start mywordfile.docx')
    

    我没有安装 Word,但我用 PNG 图像文件尝试过这样...

    os.system('start mydiagram.png')
    

    它在 Windows 10 上的照片应用中打开就好了。

    【讨论】:

    • 您可能需要考虑到 OP 在变量中具有文件名。如果有空格,则需要引号。
    • 如果参数来自用户输入,则存在shell命令注入的风险。 (攻击者可以执行任意命令)。