【问题标题】:Breaking out of an input() statement中断 input() 语句
【发布时间】:2021-03-01 09:21:09
【问题描述】:

在 python 中使用 input() 语句会停止整个代码,直到用户输入内容。我的目标是等待输入,然后,如果用户什么也没做,一段时间后输入语句将中断并继续该程序的其余部分。

它的工作方式有点像:

import time
import threading

def ask_for_input():
    input("Press Enter to Continue...")

t1 = threading.Thread(target=ask_for_input)
t1.start()

time.sleep(10)
#break out of input statement

在 time.sleep(10) 之后继续执行其余代码的问题是,如果您尝试再次要求用户输入,则用户必须首先跳出第一个输入语句以在下一个输入语句中输入内容一。这意味着如果我尝试这样的事情:

...
time.sleep(10)
input("Press Enter Again to Continue")

用户在退出第一个输入语句之前不会看到“再次按 Enter 以继续”。他们必须按两次 Enter 才能继续。

为了澄清一点,我不是在寻找输入语句在设定的时间中断。相反,我希望能够使用某种函数或标志来触发它的退出。有没有办法做到这一点?

【问题讨论】:

标签: python-3.x


【解决方案1】:

有一个 python 库可以实现这种行为。 看看inputimeout
来自文档:

from inputimeout import inputimeout, TimeoutOccurred
try:
    something = inputimeout(prompt='>>', timeout=5)
except TimeoutOccurred:
    something = 'something'
print(something)

【讨论】:

  • 有没有办法通过在代码中稍后调用一个函数来触发超时来利用这个模块?我希望它不依赖于设定的时间。
  • 不幸的是没有。事实证明,在另一个线程中中断用户输入并不是那么容易
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-28
  • 2016-03-21
  • 2016-03-19
相关资源
最近更新 更多