2012-08-30 36 views
0

我想創建一個Python代碼來打開一個像cmd一樣的程序,然後從文件菜單中導出一個.txt文件。該代碼看起來像這樣的CMD:在Python中執行類似cmd的命令

c:\ESG\Statsvis.exe \\192.168.100.222\c\ESG\S1-424\2012\06\29\S1-42420120629.dsf /output=C:\Users\jessica.macleod\Desktop\outfile.txt /param=RMS Amplitude 

在cmd中,上面的行不正是我想要的。什麼是Python的等價物?

回答

3

subprocess.Popen,像這樣:

subprocess.Popen(["/bin/ls", "-l"] 

,或者取決於你希望得到儘可能的結果(標準輸出,返回代碼)是什麼,使用subprocess.callsubprocess.call_check,或其他片段此模塊中。

+0

嗨defuz,我看着這個特殊的命令,但我仍然不太清楚它是如何工作的。這是怎麼稱呼我上面的命令?編輯:由此,我的意思是/輸出: – user1620716

+0

嘗試像這樣:'[「c:\\ ESG \\ Statsvis.exe」,「\\\\ 192.16 ... 29.dsf」,「/ output = C:\\ Users \\ jessica.macleod \\ Desktop \\ outfile.txt「,」/ param = RMS「,」Amplitude「]' – defuz

+0

我試過使用subprocess.call()命令來打開程序,但我仍然不確定如何告訴它執行該命令。編寫輸出路徑和我希望Python執行的「param」的正確方法是什麼? – user1620716

0

如果您想要具有精確的shell/cmd行爲,請在suprocess.Popen()調用中將shell參數設置爲True。然而,從文檔:

警告

與殼調用系統shell =真可以是一個安全危險如果與不可信的輸入組合 。有關詳細信息,請參閱頻繁使用的 參數下的警告。

1

另一種方式是os.system()

import os 
os.system("c:\\ESG\\Statsvis.exe \\192.16...0629.dsf /output=C:\\...\\outfile.txt ...") 
+1

在此示例中,路徑中的反斜槓將不會被正確解釋。 – defuz

+0

更新爲逃脫反斜槓。感謝您的更正。 –

0

如果你需要的命令使用子進程的輸出:

import subprocess 
out = subprocess.check_output("dir c:\ /AD", shell = True)