1

目标是使用 python shell 子进程打开特定的 excel 文件。代码再简单不过了,但我不知道出了什么问题:

import subprocess
arg1 = "C:\\Program Files (x86)\\Microsoft Office\\root\\Office16\\EXCEL.EXE"
arg2 = "C:\\Users\\user\\Documents\\test.xlsm"
p = subprocess.Popen(["start", arg1, arg2], shell=False)

该命令直接在 shell 上完美运行,但通过子进程完成时会引发以下错误: FileNotFoundError: [WinError 2] The system cannot find the file specified

我还尝试了以下方法,它直接在 shell 上同样有效,但行为不同: p = subprocess.Popen([arg1, arg2], shell=False)

从 Excel 中弹出以下失败的断言: snapshopt error

我的下一次尝试是:

import os
os.system("C:\\Users\\user\\Documents\\test.xlsm")

它复制了与上述相同的断言错误,并返回基于 系统错误代码 (0-499)的代码 3 是找不到路径。

同样的路径也适用于 shell,在这个阶段我没有想法了,有什么帮助吗?

4

1 回答 1

1

os.startfile实际上是一种更好的方法。如文档中所述 -

os.startfile(路径[,操作])

启动一个文件及其关联的应用程序。

当操作未指定或“打开”时,这就像在 Windows 资源管理器中双击文件,或者将文件名作为参数提供给交互式命令外壳中的启动命令:使用任何应用程序打开文件(如果有) 它的扩展是关联的。

当给出另一个操作时,它必须是一个“命令动词”,指定应该对文件执行什么操作。Microsoft 记录的常见动词是“打印”和“编辑”(用于文件)以及“探索”和“查找”(用于目录)

您可以执行以下操作 -

import os

os.startfile("C:\\Users\\user\\Documents\\test.xlsm")
于 2020-06-08T09:38:00.727 回答