我想在終端上獲得輸入,並只給出幾秒鐘的響應。當達到超時時,我想閱讀在接受中輸入的內容作爲給定的輸入。或者,我希望用戶能夠按「回車」提前提交答案。Unix Python - 獲取終端輸入,不需要按下輸入超時後
我有下面的代碼工作正常,但要求用戶按「輸入」提交。它有一個錯誤:輸入文本,然後等待超時將文本保留在「緩衝區」中。然後當你再次提示你輸入不同的文本時,按回車鍵,然後打印兩個字符串(見輸出)。當超時達到時,我想接受任何被輸入爲「答案」的內容。我希望用戶仍然可以通過按「enter」鍵更快地提交答案。
有沒有辦法達到理想的行爲?
注:我使用的是Mac OS X
import sys
from select import select
def getResponse(timeout):
print "Enter something:"
rlist, wlist, xlist = select([sys.stdin], [], [], timeout)
if rlist:
result = sys.stdin.readline()
return result
else:
return ''
while True:
response = getResponse(3)
print "Your input is:", response
輸出:
Enter something:
pythonYour input is:
Enter something:
dangit
Your input is: pythondangit
我不相信使用終端有任何簡單的答案。我可以看到這是用ncurses完成的,但這可能會引入一千個不同的問題。 – mmgp