2

我已经产生了N进程并监控它们的状态。所以,我想N在屏幕上打印行,每行的状态都在变化。

如何用python做到这一点?

我不希望看到重新打印。有没有类似tqdm更新的图书馆?

4

1 回答 1

1

您可以使用几个终端转义码来做到这一点:

def up(lines=1):
    clearline = '\033[2K' # clear a line
    upline = '\033[1A'    # Move cursor up a line
    for _ in range(lines):
        sys.stdout.write(upline)
        sys.stdout.write(clearline)

在此之后,您可以重新打印您的状态行。接着:

sys.stdout.flush()

这是一个完整的工作程序来证明这一点:

import sys 
from time import sleep

def up(lines=1):
    clearline = '\033[2K' # clear a line
    upline = '\033[1A'    # Move cursor up a line
    for _ in range(lines):
        sys.stdout.write(upline)
        sys.stdout.write(clearline)

num_lines = 3
for i in range(10):
    for l in range(num_lines):
        sys.stdout.write('{} hello\n'.format(i*l+i))
    sys.stdout.flush()
    sleep(0.5)
    up(num_lines)

当然,如果你正在制作一个完整的 tui,你会想要使用诸如 curses 或urwid 之类的东西

于 2017-11-09T13:47:50.067 回答