猿问

Python-在控制台中重写多行

我知道可以用“ \ r”重写终端中显示的最后一行,但是我很难确定是否有办法返回并编辑控制台中打印的前几行。


我想做的是为基于文本的RPG重新打印多行,但是对于一个应用程序,它有一个行专用于进度条,而另一行描述了下载,我也想知道。


即控制台将打印:


移动文件:NameOfFile.txt 

总进度:[########] 40%


然后在程序运行时适当地更新(两行)。


海绵宝宝撒
浏览 1183回答 3
3回答

不负相思意

这是适用于Python 2/3的Python模块,只需使用几行代码即可解决这种情况; D重印-Python 2/3的简单模块,用于在终端中打印和刷新多行输出内容您可以简单地将该output实例视为普通实例dict或list(取决于您使用的模式)。当您在output实例中修改该内容时,终端中的输出将自动刷新:D为了您的需要,下面是代码:from reprint import outputimport timeif __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)

哔哔one

最终,如果您要操作屏幕,则需要使用基础的OS库,通常是:在Linux或OSX上进行curses(或terminfo / termcap数据库跟踪的基础终端控制代码)Windows上的win32控制台API。如果您不介意使用一个操作系统或乐于在Windows上安装第三方库,那么@codeape的答案已经为您提供了许多选择。但是,如果您希望可以简单地进行pip安装的跨平台解决方案,则可以使用asciimatics。作为开发此软件包的一部分,我必须解决环境之间的差异,以提供可在Linux,OSX和Windows上运行的单个API。对于进度条,可以使用此代码使用本演示中所示的BarChart对象。
随时随地看视频慕课网APP

相关分类

Python
我要回答