等待用户输入时运行循环

时间:2019-10-01 06:52:02

标签: python loops

我想在用户未输入任何内容的情况下在脚本中运行循环。但是当他们输入了某些内容后,我希望循环中断。

我目前遇到的问题是,在使用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:中不运行任何内容。

我如何实现自己的追求?

3 个答案:

答案 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')