这是python语言的问题,终端/控制台适用于类Unix系统。如果解决方案与平台无关,但是不是必需的,那就太好了。
方案是当程序不断向终端打印行时。但是,在要打印的许多行中,其中一些行是特殊的,例如进度条或状态指示器:它们必须仅放置在控制台的底部,而所有其他行仍可以按原样打印在一行中,另一个,屏幕也正常滚动。
示例代码解决方案将比理论解决方案好得多。为此,这里是一个示例:
def print_status(msg):
# implement me
print msg
def print_many_lines():
print 'line one\n'
print 'line two\n'
print_status('i am here')
print 'line three\n'
print 'line four\n'
print 'line five\n'
print_status('i am changed')
print 'line six\n'
您能帮我实现 print_status 函数,以便传递给它的 味精 始终打印在终端的底部吗?
请注意,这与另一个类似的问题有很大不同,当在终端上 连续 打印多行时,我们如何确保它们在同一行上打印。在这种情况下使用\
r可能很有用,但不能解决此问题,因为(1)这些特殊行很可能不会连续打印,并且(2)在这些特殊行之后还会打印其他行,但是这些特殊行应保持在终端的底部
谢谢!
对于Windows终端,请尝试控制台模块。对于unix,curses模块可以。
这就是您在Windows上执行此操作的方式。
c = Console.getconsole()
c.text(0, -1, 'And this is the string at the bottom of the console')
通过指定-1
第二个参数,字符串位于最底行。
对于Linux,在最后一行打印的工作代码。
import time
import curses
def pbar(window):
height, width = window.getmaxyx()
for i in range(10):
window.addstr(height -1, 0, "[" + ("=" * i) + ">" + (" " * (10 - i )) + "]")
window.refresh()
time.sleep(0.5)
curses.wrapper(pbar)