我正在尝试使用python来运行程序。
from subprocess import Popen
sa_proc = Popen(['C:\\sa\\sa.exe','--?'])
运行这个小snippit会出现错误:
WindowsError:[错误2]系统找不到指定的文件
程序存在,我直接从资源管理器复制并粘贴到exe的绝对路径。我已经尝试过其他的东西,并且发现如果我将EXE放在带有python脚本的源文件夹中并使用'./sa.exe'那么它就可以了。我唯一能想到的是我从一个单独的分区(F :)中运行python脚本(和python)。
有什么想法吗? 感谢
答案 0 :(得分:7)
正如the docs所说,“在Windows上:Popen类使用CreateProcess()来执行对字符串进行操作的子程序。如果args是一个序列,它将使用list2cmdline转换为字符串( ) 方法。”。也许这种方法搞砸了,所以为什么不尝试更简单的方法:
sa_proc = Popen('C:\\sa\\sa.exe --?')
如果仍然失败,那么:在您尝试此之前是什么os.environ['COMSPEC']
?如果您将, shell=True
添加到Popen
的参数会发生什么?
编辑:结果显然是一个简单的错误拼写的情况,因为'sa'实际上是SpamAssassin拼写的程序 - 双倍的两次 - 而OP写的是spamassasin - 第二次一个双s但单个一个。
答案 1 :(得分:0)
您可能没有权限执行C:\ sa \ sa.exe。您是否尝试过手动运行程序?