我想在傳遞參數時從Python運行命令exe。我看了一些其他問題,而我的問題不同的原因是因爲我首先想要在傳遞某些參數時調用cmd exe程序,然後我必須等待10秒才能提示我輸入一些參數用戶名,然後一些密碼。那麼我想把這個輸出輸出到一個文件中。使用python調用命令exe
那麼,有沒有辦法通過更多的參數,如果一個進程已事先叫什麼名字? 如何使cmd exe保持打開狀態,因爲一旦我打電話給該進程就會死亡。
感謝
我想在傳遞參數時從Python運行命令exe。我看了一些其他問題,而我的問題不同的原因是因爲我首先想要在傳遞某些參數時調用cmd exe程序,然後我必須等待10秒才能提示我輸入一些參數用戶名,然後一些密碼。那麼我想把這個輸出輸出到一個文件中。使用python調用命令exe
那麼,有沒有辦法通過更多的參數,如果一個進程已事先叫什麼名字? 如何使cmd exe保持打開狀態,因爲一旦我打電話給該進程就會死亡。
感謝
看看子溝通和管道的例子。
下面是一個例子(第一,我不得不創建一個花了一些時間在這個例子中,要求輸入(6秒)稱爲wait.py
wait.py
import time
print "Sample Waiting App (waiting 6 seconds)"
time.sleep(6)
name = raw_input("Enter a Name: ")
print "Hello", name
一個簡單的Python應用程序
下面是代碼開始,等待,通過輸入和輸出讀:
automator.py
from subprocess import Popen, PIPE, STDOUT
p = Popen(['python', 'wait.py'], stdout=PIPE, stdin=PIPE, stderr=STDOUT)
print p.communicate('Jason\n')[0]
這裏是發生了什麼事下來休息:
subprocess.Popen()
創建一個進程(運行Python解釋器和傳遞wait.py腳本作爲參數)並分配給p
。 最初我有automator.py睡眠10秒(給wait.py足夠的時間來清除它的計時器),但作爲@ J.F.Sebastian指出,這種睡眠是不必要的。原因是呼叫'溝通()'將阻塞,直到wait.py完成。另外,因爲wait.py是從stdin讀取的,所以你可以在wait.py讀取它之前填寫stdin的內容。任何從stdin流中讀取的應用程序都是如此。'Jason\n'
通過p.communicate('Jason\n')[0]
發送到進程,並打印輸出。請注意,stdout
顯示wait.py打印語句的提示和輸出,但不顯示輸入,這是因爲鍵入它時輸入不在stdout
流中,而是被回顯。1.無需同時使用'.WRITE()'和'.communicate()'這裏。結合使用:'print p.communicate(b「Jason」)[0],'('p.stdin.close()'在'communic()'裏自動調用)2.'time.sleep(10)'是不必要。 – jfs
感謝您的幫助,我已經更新了我的答案(並剔除了很多不必要的解釋。) –
特別'subprocess.Popen()' –