我们知道,在Python里面,可以使用input
获取用户的输入。例如:
但有一个问题,如果你什么都不输入,程序会永远卡在这里。有没有什么办法,可以给input
设置超时时间呢?如果用户在一定时间内不输入,就自动使用默认值。
要实现这个需求,在Linux/macOS系统下面,我们可以使用selectors
。这是Python自带的模块,不需要额外安装。对应的代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| import sys import selectors
def timeout_input(msg, default='', timeout=5): sys.stdout.write(msg) sys.stdout.flush() sel = selectors.DefaultSelector() sel.register(sys.stdin, selectors.EVENT_READ) events = sel.select(timeout) if events: key, _ = events[0] return key.fileobj.readline().rstrip() else: sys.stdout.write('\n') return default
|
运行效果如下图所示:
selectors这个模块,可以使用系统层级的select
,实现IO多路复用。
这段代码来自inputimeout。上面除了Linux/macOS版本外,还有Windows版本。大家有兴趣可以看一下。