当前位置: 首页 > 面试题库 >

终端/控制台中的Python控制输出位置

毛德华
2023-03-14
问题内容

这是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)


 类似资料: