【问题标题】:How can I launch an instance of an application using Python?如何使用 Python 启动应用程序实例?
【发布时间】:2026-01-22 13:40:01
【问题描述】:

我正在创建一个 Python 脚本,它在其中执行一系列任务,其中一项任务是启动和打开 Excel 实例。在我的脚本中实现这一目标的理想方式是什么?

【问题讨论】:

标签: python scripting ipc


【解决方案1】:

os.system("打开文件.xls")

【讨论】:

  • 可能也适用于 NeXTstep。但肯定不是 Windows 或 UNIX。鉴于问题涉及 Excel,我假设 OS X 或 Windows。
【解决方案2】:

os.system("start excel.exe <path/to/file>")

(假设它在路径中,并且您在 Windows 上)

在 Windows 上,start &lt;filename&gt; 也可以工作 - 如果它已经是一个关联的扩展名(就像 xls 一样)

【讨论】:

  • 请注意,在 Windows 上,如果您 os.system(),您将看到 cmd 窗口快速打开和关闭。恕我直言,最好使用os.startfile()
【解决方案3】:

我喜欢popen2,因为它能够监控流程。

excelProcess = popen2.Popen4("start excel %s" % (excelFile))
status = excelProcess.wait()

https://docs.python.org/2/library/popen2.html

编辑:请注意,调用wait() 将阻塞,直到进程返回。根据您的脚本,这可能不是您想要的行为。

【讨论】:

    【解决方案4】:

    虽然Popen 的答案对于一般情况是合理的,但如果您想对它做一些有用的事情,我会推荐win32api 对于这种特定情况:

    它是这样的:

    from win32com.client import Dispatch
    xl = Dispatch('Excel.Application')
    wb = xl.Workbooks.Open('C:\\Documents and Settings\\GradeBook.xls')
    xl.Visible = True    # optional: if you want to see the spreadsheet
    

    取自a mailing list post,但周围有很多例子。

    【讨论】:

    • 如果你也想看excel电子表格,那么你需要加上xl.Visible = True
    【解决方案5】:

    subprocess 模块旨在替换其他几个较旧的模块和功能,例如:

    • os.system
    • os.spawn*
    • os.popen*
    • popen2.*
    • 命令。*

    .

    import subprocess
    
    process_one = subprocess.Popen(['gqview', '/home/toto/my_images'])
    
    print process_one.pid
    

    【讨论】:

      【解决方案6】:

      正如其他人所说,我建议使用 os.system。如果有人正在寻找与 Mac 兼容的解决方案,这里有一个示例:

      import os
      os.system("open /Applications/Safari.app")
      

      【讨论】:

        【解决方案7】:

        我喜欢os.startfile("path to file"),因为它打开文件就像你双击打开一样。

        我发现使用os.system("start excel filename") 打开它就像从网络打开文件一样,您必须启用编辑。

        【讨论】: