cmd运行exe无法从Python

时间:2015-08-21 23:29:18

标签: python

考虑Win 7机器上的部分Python代码(Python 2.7),

toolPath="C:\\Program Files (x86)\\Target Compiler Technologies\\adsp2-12R2\\bin\\WINbin"

这是从

下的python脚本执行的
  

C:\ dev的\ BIN \顶层\蟒

现在,我需要执行一个运行的命令(编译和构建一个DSP库,.prx是该库的项目文件) 如

  

C:\ Program Files(x86)\ Target Compiler   技术\ adsp2-12R2 \ BIN \ WINbin \ chessmk.exe   “。\ .. \ .. \ .. \ dev \ lib \ adsp2 \ mylibs.prx -r -s

我可以在cmd.exe shell中执行此操作

%toolPath%\chessmk.exe "..\..\..\dev\lib\adsp2\mylibs.prx" -r -s

我可以在Python中做同样的事情

cmd = '"C:\\Program Files (x86)\\Target Compiler Technologies\\adsp2-12R2\\bin\\WINbin\\chessmk.exe" "C:\\SVN\\ASROmni\\trunk1\\\dev\\lib\\adsp2\\mylibs.prx" -r'
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=False)

但是,我无法使用相对路径和使用 toolpath 变量为Python编写类似的代码。 例如,

cmd = 'toolPath+"\\chessmk.exe" ".\\..\\..\\..\\dev\\lib\\adsp2\\mylibs.prx" -r -s'
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=False)

给出错误:

  

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

以下也不起作用:

cmd = '"C:\\Program Files (x86)\\Target Compiler Technologies\\adsp2-12R2\\bin\\WINbin\\chessmk.exe" ".\\..\\..\\..\\dev\\lib\\adsp2\\mylibs.prx" -r'
subprocess.check_output(cmd,stderr=subprocess.STDOUT,shell=False)

更新: 从其中一条评论中,我试过了

cmd = os.path.join(toolPath,"chessmk.exe")+' C:\\SVN\\ASROmni\\trunk1\\\dev\\lib\\adsp2\\mylibs.prx -r'

它有效,但相对路径为

cmd = os.path.join(toolPath,"chessmk.exe")+' .\\..\\..\\..\\dev\\lib\\adsp2\\mylibs.prx -r'

仍然没有。

任何帮助。(这是我与python的第一天,所以请耐心等待)
请注意,cmd应该在Python中运行,而不是调用shell = True 由于
sedy

1 个答案:

答案 0 :(得分:1)

可能是您将参数传递给check_output()的方式,请改为尝试:

toolPath = ('"C:\\Program Files (x86)\\Target Compiler Technologies\\'
            'adsp2-12R2\\bin\\WINbin\\chessmk.exe"')

cmd = [toolPath, '"..\..\..\dev\lib\adsp2\mylibs.prx"', '-r' '-s']

subprocess.check_output(cmd, stderr=subprocess.STDOUT, shell=False)

然而,mylibs.prx位置的相对路径可能仍然存在问题。您可以在致电check_output()之前致电os.chdir(),确保其正常运作。