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

2024-04-20 07:40:11 发布

您现在位置:Python中文网/ 问答频道 /正文

这是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功能,以便传递给它的msg始终在终端底部打印?在

请注意,这与another similar question非常不同,即当多行连续打印到终端时,如何确保它们在同一行打印。在这种情况下,使用\r可能很有用,但无法解决此问题,因为(1)这些特殊行很可能不会连续打印,(2)在这些特殊行之后将打印其他行,但这些特殊行仍应保留在终端的底部。在

谢谢!在


Tags: 程序语言终端系统defstatuslineunix
2条回答

对于Windows终端,请尝试使用console module(对于unix,curses module)就可以了。在

这就是你在Windows上的操作方式。在

c = Console.getconsole()
c.text(0, -1, 'And this is the string at the bottom of the console')

通过为第二个参数指定-1,字符串位于最后一行。在

对于Linux,是在最后一行打印的工作代码。在

^{pr2}$

听起来你想使用curses库,它处理Unix系统上基于文本的ui。python的标准库中有一个用于它的模块:

https://docs.python.org/2/library/curses.html#module-curses

如何使用它恐怕超出了这里的回答范围。在

相关问题 更多 >