Die akzeptierte Antwort ist nicht perfekt . Die Zeile, die zuerst gedruckt wurde, bleibt dort und wenn Ihr zweiter Druck nicht die gesamte neue Zeile abdeckt, erhalten Sie Mülltext.
Um das Problem zu veranschaulichen, speichern Sie diesen Code als Skript und führen Sie ihn aus (oder werfen Sie einen Blick darauf):
import time
n = 100
for i in range(100):
for j in range(100):
print("Progress {:2.1%}".format(j / 100), end="\r")
time.sleep(0.01)
print("Progress {:2.1%}".format(i / 100))
Die Ausgabe sieht ungefähr so aus:
Progress 0.0%%
Progress 1.0%%
Progress 2.0%%
Progress 3.0%%
Was für mich funktioniert, ist, die Zeile zu löschen, bevor ich einen dauerhaften Druck hinterlasse. Sie können sich jederzeit an Ihr spezifisches Problem anpassen:
import time
ERASE_LINE = '\x1b[2K' # erase line command
n = 100
for i in range(100):
for j in range(100):
print("Progress {:2.1%}".format(j / 100), end="\r")
time.sleep(0.01)
print(ERASE_LINE + "Progress {:2.1%}".format(i / 100)) # clear the line first
Und jetzt wird wie erwartet gedruckt:
Progress 0.0%
Progress 1.0%
Progress 2.0%
Progress 3.0%