3

我正在尝试使用 python 来运行程序。

from subprocess import Popen 
sa_proc = Popen(['C:\\sa\\sa.exe','--?'])

运行这个小片段会出现错误:

WindowsError: [错误 2] 系统找不到指定的文件

该程序存在,我直接从资源管理器复制并粘贴了exe的绝对路径。我尝试了其他方法,发现如果我将 EXE 与 python 脚本一起放在源文件夹中并使用“./sa.exe”,那么它就可以工作。我唯一能想到的是我正在从一个单独的分区(F:) 运行 python 脚本(和 python)。

有任何想法吗?谢谢

4

2 回答 2

8

正如文档所说,“在 Windows 上:Popen 类使用 CreateProcess() 执行子程序,该程序对字符串进行操作。如果 args 是一个序列,它将使用 list2cmdline() 方法转换为字符串。”。也许这种方法把事情搞砸了,所以为什么不尝试更简单的方法:

sa_proc = Popen('C:\\sa\\sa.exe --?')

如果这仍然失败,那么:os.environ['COMSPEC']在你尝试这个之前是什么?如果添加, shell=TruePopen的参数会发生什么?

编辑:结果显然是一个简单的拼写错误,因为“sa”实际上是程序拼写 SpamAssassin - 双 s 两次 - 而 OP 写的是 spamassasin - 一个双 s 但一个单第二次。

于 2009-07-25T02:36:58.333 回答
0

您可能没有执行 C:\sa\sa.exe 的权限。您是否尝试过手动运行程序?

于 2009-07-24T23:28:47.113 回答