Python3:我试图允许用户在给定的时间内将响应输入到输入中,但是在给定的时间段之后,如果用户没有输入任何内容,我希望中止输入并为存储输入的变量指定一个默认值,或者在给定的时间段之后将默认值输入到input语句中。在
我试过了:
from threading import Timer
timeout = 2
t = Timer(timeout, print, ["\nSorry, time is up"])
t.start()
answer = input("You have 2 seconds to answer:")
t.cancel()
print(answer)
但问题是解释器仍然提示用户输入,即使在最后一行被执行并且answer
被打印出来之后,这对我所要做的是行不通的(本质上,一个命令行游戏,当玩家没有给它输入时,它需要继续运行,但是当它收到输入时,它会更新。在
最好的办法是什么?我知道python并没有真正的超时函数或类似的功能,但是有没有什么方法可以通过系统命令或模块来实现呢?在
有几种可行的方法(其中一些可能是特定于Unix的):
subprocess
中的输入,该输入可以在超时后kill
ed。(许多函数,包括^{timeout
参数来自动执行此操作。)alarm
或类似的方法向您自己的进程发送一个信号(并安装一个抛出异常的signal
处理程序)。在close
在超时后读取描述符;这听起来很激烈,但通常说是可以工作的,只要在用dup2
还原之前,不要意外地open
一个关闭的描述符上的文件。在read
和select
等低级工具读取输入,这将不幸地禁用readline
之类的好东西。在在任何情况下,您必须决定如何处理在超时之前输入的不完整但非空的输入。默认情况下,终端驱动程序可能会将其无形地传输到下一个输入提示符。在
相关问题 更多 >
编程相关推荐