考虑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
答案 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()
,确保其正常运作。