因此,我正在編寫一個程序,它有一次必須調用一個單獨的可執行文件。我使用subprocess.call
讓我的python腳本從命令行調用可執行文件。問題是,在執行過程中,該可執行文件會提示用戶輸入兩次。我希望我的腳本爲可執行文件提供輸入,但我不確定如何執行此操作。Subprocess.call和要求輸入的程序
這是在Windows 10上,應該有所作爲。
因此,我正在編寫一個程序,它有一次必須調用一個單獨的可執行文件。我使用subprocess.call
讓我的python腳本從命令行調用可執行文件。問題是,在執行過程中,該可執行文件會提示用戶輸入兩次。我希望我的腳本爲可執行文件提供輸入,但我不確定如何執行此操作。Subprocess.call和要求輸入的程序
這是在Windows 10上,應該有所作爲。
import os
os.system("exec_name arguments")
將輸入作爲參數傳遞給可執行文件。
您將不得不使用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
做引擎蓋下類似的東西。
我試過了,但它給了我一個錯誤,說它正在尋找一個字節類型的輸入而不是一個字符串。將輸入切換到一個字節數組,然後給了我「開始通信後無法發送輸入」,這相當混亂。 – eyeballfrog
在執行可執行文件期間,會向用戶提示輸入。額外的論據似乎沒有做任何事情。 – eyeballfrog
「問題是,該可執行文件提示用戶輸入兩次,我希望我的腳本爲可執行文件提供輸入,但我不知道如何執行。」我以爲你事先已經有了輸入,而且可執行文件對輸入的調用是多餘的。 –