我想運行一個python 3腳本,通過標準輸入或手動輸入數據。將Python標準輸入流更改爲Windows控制檯輸入
E.g.假設我想用一行打印輸入的內容。該腳本,稱爲app.py
會是這個樣子:
from sys import stdin
print("Input says:"+stdin.readline())
然後,我可能會在以下兩種方式運行:
1.傳遞一個文件作爲標準輸入
python app.py < input.txt
2.提示用戶輸入
python app.py
我的問題是,在這兩種情況下,後閱讀stdin我想提示用戶一些額外的數據。繼之前提到的例子那就是:
from sys import stdin
print("Input says:"+stdin.readline())
print("Did you like that? (Yes/No)")
ans = input() # This line is the issue!
if(ans == "Yes"):
print("You liked it!")
的註釋行上述完全適用於情況2,但是對於情況1,因爲它試圖從文件中讀取拋出EOFError: EOF when reading a line
錯誤。
我想知道,如果在該行之前我可以做類似
sys.stdin = SOMETHING
凡SOMETHING表示Windows控制檯輸入。我認爲如果我能做到這一點,那麼這兩種情況都可以正常工作。
您可以通過'win32console' api到達控制檯。 – tdelaney 2014-12-04 19:18:37
嘗試'CON'或'CONIN $'。可能會工作,具體取決於Python用它做什麼。 – 2014-12-04 21:13:34
你的問題不清楚;即使您已將文件作爲「sys.stdin」提供,您仍希望從* console *提示輸入一些內容。 – 2016-07-30 17:37:55