我想在用户未输入任何内容的情况下在脚本中运行循环。但是当他们输入了某些内容后,我希望循环中断。
我目前遇到的问题是,在使用input()
函数时,脚本将停止并等待输入,但是我想在等待用户输入的同时运行脚本的另一部分。
我尝试将try:
与raw_input()
一起使用:
while True:
try:
print('SCAN BARCODE')
userInput= raw_input()
#doing something with input
except:
#run this while there is no input
有了这个,我发现except:
中的任何内容都将始终运行,但即使有用户输入也不会运行try:
。如果我将raw_input()
更改为input()
,则脚本仅在input()
等待,而在except:
中不运行任何内容。
我如何实现自己的追求?
答案 0 :(得分:1)
您可以使用python线程:
from threading import Thread
import time
thread_running = True
def my_forever_while():
global thread_running
start_time = time.time()
# run this while there is no input
while thread_running:
time.sleep(0.1)
if time.time() - start_time >= 5:
start_time = time.time()
print('Another 5 seconds has passed')
def take_input():
user_input = input('Type user input: ')
# doing something with the input
print('The user input is: ', user_input)
if __name__ == '__main__':
t1 = Thread(target=my_forever_while)
t2 = Thread(target=take_input)
t1.start()
t2.start()
t2.join() # interpreter will wait until your process get completed or terminated
thread_running = False
print('The end')
在我的示例中,您有2个线程,第一个线程启动并执行代码,直到您有用户输入,线程2正在等待用户输入。获取用户输入线程后,线程1和2将停止。
答案 1 :(得分:0)
我建议您寻找select
它允许您检查文件描述符是否为ready
以便进行读/写/预期操作
答案 2 :(得分:0)
使用标记布尔值很简单
Flag = True
while Flag:
try:
Print('scan bar code')
User_inp = input()
if User_inp != '':
Flag = False
Except:
Print('except part')