为了账号安全,请及时绑定邮箱和手机立即绑定

Python-在控制台中重写多行

Python-在控制台中重写多行

海绵宝宝撒 2019-10-11 10:52:24
我知道可以用“ \ r”重写终端中显示的最后一行,但是我很难确定是否有办法返回并编辑控制台中打印的前几行。我想做的是为基于文本的RPG重新打印多行,但是对于一个应用程序,它有一个行专用于进度条,而另一行描述了下载,我也想知道。即控制台将打印:移动文件:NameOfFile.txt 总进度:[########] 40%然后在程序运行时适当地更新(两行)。
查看完整描述

3 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

这是适用于Python 2/3的Python模块,只需使用几行代码即可解决这种情况; D


重印-Python 2/3的简单模块,用于在终端中打印和刷新多行输出内容


您可以简单地将该output实例视为普通实例dict或list(取决于您使用的模式)。当您在output实例中修改该内容时,终端中的输出将自动刷新:D


为了您的需要,下面是代码:


from reprint import output

import time


if __name__ == "__main__":

    with output(output_type='dict') as output_lines:

        for i in range(10):

            output_lines['Moving file'] = "File_{}".format(i)

            for progress in range(100):

                output_lines['Total Progress'] = "[{done}{padding}] {percent}%".format(

                    done = "#" * int(progress/10),

                    padding = " " * (10 - int(progress/10)),

                    percent = progress

                    )

                time.sleep(0.05)


查看完整回答
1 反对 回复 2019-10-11
?
哔哔one

TA贡献1854条经验 获得超8个赞

最终,如果您要操作屏幕,则需要使用基础的OS库,通常是:


在Linux或OSX上进行curses(或terminfo / termcap数据库跟踪的基础终端控制代码)

Windows上的win32控制台API。

如果您不介意使用一个操作系统或乐于在Windows上安装第三方库,那么@codeape的答案已经为您提供了许多选择。


但是,如果您希望可以简单地进行pip安装的跨平台解决方案,则可以使用asciimatics。作为开发此软件包的一部分,我必须解决环境之间的差异,以提供可在Linux,OSX和Windows上运行的单个API。


对于进度条,可以使用此代码使用本演示中所示的BarChart对象。


查看完整回答
反对 回复 2019-10-11
  • 3 回答
  • 0 关注
  • 1182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信