我想在终端上得到输入,只给几秒钟的时间来响应。当达到超时时,我想读取在接受中输入的任何内容作为给定的输入。可选地,我希望用户能够按“输入”以尽早提交他们的答案。
我有下面的代码可以正常工作,但需要用户按“输入”来提交。它有一个错误:输入文本然后等待超时将文本保留在“缓冲区”中。然后,当您再次收到提示时,您输入不同的文本,按回车键,然后打印两个字符串(见输出)。当达到超时时,我想接受输入的任何内容作为“答案”。我希望用户仍然能够通过按“输入”更快地提交答案。
有没有办法实现所需的行为?
注意:我使用的是 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