2016-03-15 46 views
0

我需要一些幫助來開發一個python軟件。基本上當它試圖做到這一點:Python在終端中回答命令提示

os.system("commandHere usernameHere") 

我需要它來回答密碼提示,要求輸入密碼。不幸的是,第三個參數不能添加密碼,我不知道該如何處理。另外,還有一個問題,我如何從終端接收輸出到我的python程序?

謝謝! :)

+0

關於讀命令的輸出,試試這個:子進程模塊(https://docs.python.org/2/library/subprocess.html),你很可能要subprocess.check_output() – pholtz

回答

1

您最好使用subprocess.Popen而不是os.system,因爲它允許您發送數據和從過程讀取數據。請注意,Popen將採用命令和參數列表,而不是帶空格的字符串,因此["commandHere", "usernameHere"]而不是"commandHere usernameHere"。一旦Popen完成,我們可以寫入進程並從中讀取輸出,如下所示。

import subprocess 

p = subprocess.Popen(["commandHere", "usernameHere"], shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE) 
p.stdin.write(b"yourPassword\n") # What you need to input 
result = p.stdout.read()   # The program's output 
print(result) 
+0

我以前使用過子進程,但不知道這是人們更喜歡子進程與os.system的原因。不斷學習新的東西,我會測試一下。謝謝! :) – user282190

+0

請您概述「yourPassword \ n」旁邊的「b」是什麼意思?如果我們有多個輸入呢?它應該是另一個p.stdin.write? – user282190

+0

'b'將'str'(字符串)對象更改爲'bytes'對象 - 可以很容易地推入終端的字符集合,有點像擊鍵。如果你需要多個輸入,你可以添加另一個'p.stdin.write'。 –