2
我正在Python中编写一个简单的双计时器。 (我正在运行Linux,这应该只需要在我的系统上运行。)这个想法是脚本有两个单独的定时器,其中一个定时器在任何时候都运行。用户应该能够按下按钮来切换正在运行的定时器,或者同时暂停。目前,测试脚本是这样的:在stdin中捕获单字符输入,同时输出到Python中的stdout
now = datetime.datetime.now()
until = now + datetime.timedelta(minutes=2)
print now,
while now < until:
print "\r",
now = datetime.datetime.now()
print now,
sys.stdout.flush()
# check stdin here
time.sleep(0.1)
(我在这里省略的代码进口。)
此输出定时器每0.1秒标准输出的电流值,覆盖以前的这样做的价值。
但是,我遇到了问题,正在制定如何实施# check stdin here
系列。理想情况下,用户应该能够按下,比如“p”,并且计时器将被暂停。目前,我有这个代替time.sleep(0.1)
:
if select.select([sys.stdin],[],[],0.1)[0]:
print sys.stdin.readline().strip()
...它的工作原理,但它要求用户按一个命令输入得到认可。有没有办法做到这一点,而不需要输入被按下?
本文中描述的“Linux非阻塞控制台输入”解决方案完全符合我的需求,谢谢!这里我不需要任何跨平台兼容性。 其他人建议使用curses,这也适用,因为默认情况下,curses会使用termios方法设置相同的模式。 termios方法不会更改任何其他设置,但是,诅咒会这样做,所以它更加整洁。 – Sam 2010-05-20 17:39:46
很高兴帮助!忽略我关于线程模块的一点。在那里,我离开了基地。 – 2010-05-20 19:02:41