使用python动态终端打印

发布于 2021-01-29 19:35:27

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

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

关注者
0
被浏览
52
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    如果只需要更新一行(例如,创建进度条),最简单的方法是使用'\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,则可以为屏幕的不同部分,文本输入框和鼠标支持创建多个窗口。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看