Python: How to print on same line, clearing previous text?
Question:
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?
Answers:
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")
Along with r
, the ansi-sequence
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?
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")
Along with r
, the ansi-sequence