问题
In Python you can print on the same line using \r to move back to the start of the line.
This works well for progress bars or increasing precentage counters, eg: Python print on same line
However when printing lines that may decrease in length, this leaves the previous lines text there, eg:
import sys
for t in ['long line', '%']:
sys.stdout.write(t + '\r')
sys.stdout.write('\n')
Leaves the terminal text as: %ong line.
Whats the best way to write a shorter line after a longer one, when printing to the same line?
回答1:
Along with \r, the ansi-sequence \033[K is needed - erase to end of line.
This code works as expected.
import sys
for t in ['long line', '%']:
sys.stdout.write('\033[K' + t + '\r')
sys.stdout.write('\n')
回答2:
I think the simplest way to do this is to write spaces over the characters. For this, it'd be a good idea to write as many spaces are needed to cover the last line only. Example:
previousLength = 0
for t in ["long line", "%"]:
print(" " * previousLength, end="\r")
print(t, end="\r")
previousLength = len(t)
print("\n")
来源:https://stackoverflow.com/questions/45263205/python-how-to-print-on-same-line-clearing-previous-text