如何在while循环期间获取用户输入而不阻塞

2 python

我正在尝试编写一个while循环,通过使用os.system("clear")不断更新屏幕,然后每隔几秒打印一个不同的文本消息.如何在循环期间获得用户输入?raw_input()只是暂停和等待,这不是我想要的功能.

import os
import time

string = "the fox jumped over the lazy dog"
words = string.split(" ")
i = 0 

while 1:
    os.system("clear")
    print words[i]
    time.sleep(1)
    i += 1
    i = i%len(words)
Run Code Online (Sandbox Code Playgroud)

我希望能够在中间按'q'或'p'分别退出和暂停.

Ale*_*lli 9

Python标准库中的select模块可能正是您所需要的 - 标准输入具有FD 0,但您可能还需要在unix-y上将终端设置为"raw"(而不是"cooked")模式系统,从它获得单个按键,而不是整行与行结束.如果在Windows上,msvcrt(也在Python标准库中)具有您需要的所有功能 - msvcrt.kbhit()告诉您是否有任何键击未决,如果是,则msvcrt.getch()告诉您它是什么字符.