簡體   English   中英

cmd運行exe無法在Python中運行

[英]cmd to run exe not working from Python

考慮Win 7機器上的Python代碼(Python 2.7)的一部分,

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

這是從python腳本下執行的

C:\\ dev \\ bin \\ toplevel \\ python

現在,我需要執行一個命令來運行(編譯並構建一個DSP庫,.prx是該庫的項目文件),如下所示:

C:\\ Program Files(x86)\\ Target編譯器技術\\ 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。
謝謝
塞迪

可能是您將參數傳遞給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位置的相對路徑可能仍然是一個問題。 您可以通過在調用os.chdir()之前立即調用check_output()來使其工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM