2013-09-28 168 views
-3

這令人沮喪。我搜查了很多,但沒有結果幫助我。我嘗試了子進程,但我仍然無法使它工作。基本上,我想這條線的工作:python運行帶選項的CMD命令

appName = "ap01" 
optna = "-server" 
optnb = "-filename=c:/test.VS" 
optnc = "-display=1" 

os.system('start "VSM" "C:/bin/" {appName, optna, optnb, optnc} ') 

在CMD我想簡單地鍵入

CD C:/bin/ 

按回車鍵,然後:

ap01 -server -filename=C:/test.VS -display=1 

回答

0

怎麼樣:

import os 

appName = "ap01" 
opts =[ 
    "-server", 
    "-filename=c:/test.VS", 
    "-display=1" 
] 

opts = ' '.join(opts) 
os.system(r'start "" "C:\bin\{:}" {:}'.format(appName, opts)) 

很難測試,因爲我沒有ap01但與一個簡單的批處理文件無論如何,你應該像@ l4mpi評論一樣使用子流程。因此,這將做的是:

import subprocess 
import os 

app=[ 
    "ap01.ext", 
    "-server", 
    "-filename=c:/test.VS", 
    "-display=1" 
] 

os.chdir('"C:/bin/') 
subprocess.call(app, shell=True) 

注意這是Windows挑剔一點,因爲它需要知道你的應用程序的全名。至於天氣或沒有應用程序可以通過esc終止有點ap01的性質。如果你通過shell來運行它,那麼它是可以終止的,因爲shell繼續存在並且可以被終止。如果你管它,那麼它可能會或可能不會。您應該啓動並將其轉換爲服務INSTSRV.EXE

+0

賀雅,作品像一個魅力!只有1個問題。如果我從CMD運行我的程序,取消它的唯一方法是如果我使用Ctrl + C。現在,如果我按下ESC從python運行它,它也會取消它。有沒有辦法讓ESC不會取消我的程序?我爲該應用編寫圖形用戶界面的原因之一是,我每次按窗口中的esc時都會意外地取消它:( – Dariusz

+0

怎麼樣?沒有理由在python2.4之後使用'os.system','Popen ''''''subprocess.call'應該是首選的;特別是在這種情況下,因爲你可以用'cwd'參數設置工作目錄。 – l4mpi

+0

@ l4mpi我同意但用戶正在使用它並沒有時間去做更進一步的(因爲事情剛剛發生,沒有python)因爲事情剛剛發生:P無論如何,現在我不再修改它,現在我有時間了 – joojaa