2011-12-05 305 views
0

我正在開發板的閃爍過程的自動化。 我有一個命令行閃爍工具,它允許我執行閃爍電路板所需的各種命令。從Python腳本執行命令

我正在嘗試使用Python腳本自動執行相同的操作。 我使用subProcess.Popen啓動.exe,然後我需要執行其他命令。 我已經發布了下面的須藤代碼:

  1. process = subprocess.Popen(filename.exe, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
  2. process.communicate(arg) 我也試圖與
  3. subProcess.stdin(arg)

但我沒能得到期望的結果。 我嘗試創建批處理文件,然後運行它形成Python,但沒有運氣。它只是啓動exe,然後關閉它。

任何人都可以幫助我解決這個問題。我剛剛開始使用Python腳本,請幫助我。

回答

0

您可以使用os.system()(http://docs.python.org/library/os.html#os.system)從python中執行另一個程序。

+0

'os.system'是老年人和不太安全(見你的鏈接)比'subprocess'的OP使用正確的模塊。 [此鏈接](http://docs.python.org/library/subprocess.html#subprocess-replacements)向您展示瞭如何操作。 – Ben

+0

感謝您的提示。 – Thargor

+0

感謝所有人的快速解答。但我的問題是我有一個可執行文件,我可以用Popen打開它。它會打開一個控制檯窗口,在獲取控制檯之後,我需要在此特定控制檯上執行一些命令。請幫我解決這個問題。 – Swapnil

0

從你的問題猜測,你試圖執行一系列的命令嗎? 例如:

filename.exe arg1 arg2 
file2.exe arg3 arg4 

做到這一點的最簡單的方法是:

import subprocess 
subprocess.check_output(['filename.exe', 'arg1', 'arg2']) 
subprocess.check_output(['file2.exe', 'arg3', 'arg4']) 

文檔的subprocess.check_output

0

什麼簡單的追加參數的命令字符串像這樣:

p = subprocess.Popen('%s %s' % (filename, args), shell=True) 
sts = os.waitpid(p.pid, 0)[1] 
0

您應該刪除「shell = True」,因爲您的問題巧妙地不需要通過shell運行你的exe程序。 對於參數,它會這樣:

process = subprocess.Popen(['filename.exe', arg1, arg2], stdin=subprocess.PIPE, stdout=subprocess.PIPE)