猿问

带有Python超时的键盘输入

带有Python超时的键盘输入

您将如何提示用户输入,但在N秒后超时?

Google正在指向一条关于它的邮件帖子http:/mail.python.org/pipermail/python-list/2006-1月/533215.html但这似乎行不通。超时发生的语句,无论是sys.input.readline还是timer.space(),我总是得到:

<type 'exceptions.TypeError'>: [raw_]input expected at most 1 arguments, got 2

不知道怎么就抓不到了。


临摹微笑
浏览 1462回答 3
3回答

哔哔one

您所链接的示例是错误的,当调用警报处理程序而不是读取块时,实际会出现异常。最好试试这个:import&nbsp;signal TIMEOUT&nbsp;=&nbsp;5&nbsp;#&nbsp;number&nbsp;of&nbsp;seconds&nbsp;your&nbsp;want&nbsp;for&nbsp;timeoutdef&nbsp;interrupted(signum,&nbsp;frame): &nbsp;&nbsp;&nbsp;&nbsp;"called&nbsp;when&nbsp;read&nbsp;times&nbsp;out" &nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'interrupted!'signal.signal(signal.SIGALRM,&nbsp;interrupted)def&nbsp;input(): &nbsp;&nbsp;&nbsp;&nbsp;try: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;print&nbsp;'You&nbsp;have&nbsp;5&nbsp;seconds&nbsp;to&nbsp;type&nbsp;in&nbsp;your&nbsp;stuff...' &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foo&nbsp;=&nbsp;raw_input() &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;foo&nbsp;&nbsp;&nbsp;&nbsp;except: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#&nbsp;timeout &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return#&nbsp;set&nbsp;alarmsignal.alarm(TIMEOUT)s&nbsp;=&nbsp;input()#&nbsp;disable&nbsp;the&nbsp;alarm&nbsp;after&nbsp;successsignal.alarm(0)print&nbsp;'You&nbsp;typed',&nbsp;s
随时随地看视频慕课网APP

相关分类

Python
我要回答