2017-02-26 65 views
-1

因此,我正在編寫一個程序,它有一次必須調用一個單獨的可執行文件。我使用subprocess.call讓我的python腳本從命令行調用可執行文件。問題是,在執行過程中,該可執行文件會提示用戶輸入兩次。我希望我的腳本爲可執行文件提供輸入,但我不確定如何執行此操作。Subprocess.call和要求輸入的程序

這是在Windows 10上,應該有所作爲。

回答

0
import os 
os.system("exec_name arguments") 

將輸入作爲參數傳遞給可執行文件。

+0

在執行可執行文件期間,會向用戶提示輸入。額外的論據似乎沒有做任何事情。 – eyeballfrog

+0

「問題是,該可執行文件提示用戶輸入兩次,我希望我的腳本爲可執行文件提供輸入,但我不知道如何執行。」我以爲你事先已經有了輸入,而且可執行文件對輸入的調用是多餘的。 –

0

您將不得不使用subprocess.Popen class創建一個實例,該實例表示您希望通過實例.communicate()方法與之通信的子進程。

像這樣的東西應該工作

proc = subprocess.Popen([executable_name] + args, 
         stdin=subprocess.PIPE, stdout=subprocess.PIPE, 
         stderr=subprocess.PIPE) 
out, err = proc.communicate(input_str) 

subprocess.check_call做引擎蓋下類似的東西。

+0

我試過了,但它給了我一個錯誤,說它正在尋找一個字節類型的輸入而不是一個字符串。將輸入切換到一個字節數組,然後給了我「開始通信後無法發送輸入」,這相當混亂。 – eyeballfrog