python:在连续循环中使用键盘输入?

Flo*_*rei 5 python

操作系统是 Redhat-c​​lone Linux 发行版,我使用的是 python-2.x。

一般代码结构为:

# stuff is initialized
while True:
    # read stuff from remote devices
    # process data
    # maybe do stuff, or maybe just watch
    os.system("clear")
    # display status of remote devices
    time.sleep(1)
Run Code Online (Sandbox Code Playgroud)

我想让用户通过按各种键来驱动程序。例如“按 S 正常关闭远程设备,按 K 杀死,按 R 重新启动”。所有这些操作都需要在大循环内发生——我的伪代码中的“也许做些事情,或者只是看”注释。如果没有按下任何键,程序应该一直循环。

我不确定如何在 while True: time.sleep(1) 循环的上下文中完成键盘阅读。

sar*_*old 1

可能最简单的方法是使用curses;它可以让你清除屏幕,而无需求助于可能存在或可能不存在的外部程序(虽然很有趣,/usr/bin/clear是由我的 Ubuntu 系统上的软件包提供的ncurses-bin),它使得无需按下即可轻松监听击键Enter,并且可以放置文本在屏幕上的特定位置非常容易。

使用curses的缺点是使用它的程序很难在管道中使用。但是,如果您已经clear(1)从程序内部进行调用,那么管道已经不是一个真正的选择。

  • 如果你不想依赖`clear`命令,你可以从python打印ANSI代码:`print "\33[H\33[2J"`。快速加权加权平均法 (2认同)