小编典典

使用python动态终端打印

python

像hellanzb这样的某些应用程序具有一种以动态刷新数据的形式打印到终端的方式,类似于top()。

python中最好的方法是什么?我已经阅读了日志记录和诅咒,但是不知道该使用什么。我正在创建top的重新实现。如果您还有其他建议,我也欢迎他们。


阅读 217

收藏
2020-12-20

共1个答案

小编典典

如果只需要更新一行(例如,创建进度条),最简单的方法是使用'\r'(回车)和sys.stdout

import sys
import time

for i in range(10):
    sys.stdout.write("\r{0}>".format("="*i))
    sys.stdout.flush()
    time.sleep(0.5)

如果您需要支持移动指针等的适当控制台UI,请使用curses标准库中的模块:

import time
import curses

def pbar(window):
    for i in range(10):
        window.addstr(10, 10, "[" + ("=" * i) + ">" + (" " * (10 - i )) + "]")
        window.refresh()
        time.sleep(0.5)

curses.wrapper(pbar)

强烈建议使用该curses.wrapper函数来调用您的主函数,它将在出现错误的情况下负责清理终端,因此以后不会处于无法使用的状态。

如果创建更复杂的UI,则可以为屏幕的不同部分,文本输入框和鼠标支持创建多个窗口。

2020-12-20