注意:运行Python 2.7,在MacBook(OSX)上工作
我想查询我的用户输入,但是如果在时间间隔后没有输入,请运行其他内容,然后重试。这是我写的:
import sys, select
def test():
waittime = 4
i, o, e = select.select( [sys.stdin], [], [], waittime)
if i:
print 'got i'
else:
print 'did not get i'
test()
这样做的是:如果用户不按[返回],等待3秒钟,则打印"没有得到我",请重新运行该功能。如果用户按[返回],如果(i)语句无限期运行。
我想做的事情要做:如果用户按[返回],打印'get i',重新运行函数,请等待用户按返回。如果用户不按返回,请等待三秒钟,打印"没有得到我",请重试。
事先感谢您的任何帮助!-erik
首先,我用多线程解决了这一点,但我想它是舷外的。
import sys,time,select
anidle = 0.0
while True:
time.sleep(0.01)
incoming = select.select([sys.stdin],[],[],0.0)[0]
if len(incoming) > 0:
anidle = 0.0
aline = sys.stdin.readline()
# process the input here
print 'Input:', aline
break
anidle += 0.01
if anidle > 4:
# process no input for 4 seconds here
print 'No input.'
break