【问题标题】:Print to same line in console, over previous text, Python 3.6打印到控制台中的同一行,覆盖以前的文本,Python 3.6
【发布时间】:2019-04-01 11:49:37
【问题描述】:

我已经尝试了其他问题中提到的所有脚本,但对我不起作用。

for x in range (0,10):
    print(x, end='\r', flush=True)
    print(x, sep='\r', end='', flush=True)
    print('\r', x)

请帮忙。

【问题讨论】:

  • 您的预期输出如何?
  • @dirtybit,它应该打印在同一个地方,对我来说打印像 0 1 2 3 4 5 6 7 8 9,我想在同一个地方覆盖,最后 9 应该在那里

标签: python python-3.x


【解决方案1】:

您可能想覆盖文本,对吧?

您需要写退格来删除最后一行,然后打印下一行。 看看这篇文章的例子:How to create a spinning command line cursor?

【讨论】:

  • 是想覆盖
  • 请注意,如果您想看到文本被覆盖,您可能需要在循环中添加一些延迟。
【解决方案2】:

也许,您希望time.sleep(1) 具有更好的可视化效果,使用stdout.write

import sys
import time
for i in range(5):
    sys.stdout.write('\r' + str(i))
    time.sleep(1)

输出

【讨论】:

  • 谢谢,将从终端检查,Python 基本 IDLE 没有发生。
【解决方案3】:
>>> for x in range(10):
...  print('\r', x, end='')
... 
 9>>> 

如您所见,所有其他数字都被覆盖,因为回车符号\r

【讨论】:

  • 对于像 0 1 2 3 4 5 6 7 8 9 这样的打印,我想覆盖
  • @SPy,你在哪里运行这个?您的终端似乎不支持回车符号。尝试在您的操作系统提供的常规终端中运行它。
  • 在 Python IDLE 中运行
  • @SPy,这就是问题所在。而是在普通终端中运行它。
  • 谢谢,将在终端检查
猜你喜欢
  • 1970-01-01
  • 2021-04-08
  • 2011-07-07
  • 1970-01-01
  • 1970-01-01
  • 2016-07-30
  • 2017-12-29
  • 1970-01-01
  • 2015-11-05
相关资源
最近更新 更多