【发布时间】:2020-03-31 09:52:57
【问题描述】:
我正在寻找一种方法来阻止脚本在用户输入时运行,而不会在屏幕上得到杂乱的异常输出,也不会重新引发。
我喜欢 sys.exit() 方法,它在运行 python3 myscript.py 时完全实现了我想要的,但是如果我以交互方式运行该函数,这也会杀死我的 repl,这是我想要避免的。
一个例子是:
def wait_input(message,timeout):
print (message)
i, o, e = select.select( [sys.stdin], [], [], timeout )
if (i):
return sys.stdin.readline().strip()
else:
return ""
def user_checkpoint(question, accepted_answers=("y","yes") ):
answer = wait_input(question,3600).lower()
if answer not in accepted_answers:
print('Abort')
somethinglike.sys.exit()
> user_checkpoint('keep running?')
n
Abort
>
重要提示:请注意,在 Abort 之后我仍然处于 repl 状态,如果我确实在代码中使用 sys.exit() 则不会发生这种情况。
【问题讨论】:
标签: python python-3.x read-eval-print-loop