Python:如何在同一行打印,清除以前的文本?

时间:2017-07-23 08:45:40

标签: python-3.x stdout

在Python中,您可以使用\r在同一行上打印,然后返回到行的开头。

这适用于进度条或增加百分比计数器,例如:Python print on same line

但是,当打印长度可能会减少的行时,会在前面的行中留下文本,例如:

import sys
for t in ['long line', '%']:
    sys.stdout.write(t + '\r')
sys.stdout.write('\n')

将终端文本留作:%ong line

当打印到较长的一行时,打印到同一行的最佳方法是什么?

2 个答案:

答案 0 :(得分:1)

\r一起,需要ansi-sequence \033[K - 擦除到行尾

此代码按预期工作。

import sys
for t in ['long line', '%']:
    sys.stdout.write('\033[K' + t + '\r')
sys.stdout.write('\n')

答案 1 :(得分:0)

我认为最简单的方法是在字符上写空格。为此,编写需要多少空格才能覆盖最后一行是一个好主意。 例如:

previousLength = 0
for t in ["long line", "%"]:
    print(" " * previousLength, end="\r") 
    print(t, end="\r")

    previousLength = len(t)

print("\n")