Jawaban yang diterima tidaklah sempurna . Baris yang dicetak pertama akan tetap di sana dan jika cetakan kedua Anda tidak menutupi seluruh baris baru, Anda akan berakhir dengan teks sampah.
Untuk mengilustrasikan masalah, simpan kode ini sebagai skrip dan jalankan (atau lihat saja):
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))
Outputnya akan terlihat seperti ini:
Progress 0.0%%
Progress 1.0%%
Progress 2.0%%
Progress 3.0%%
Apa yang berhasil bagi saya adalah menghapus garis sebelum meninggalkan cetakan permanen. Jangan ragu untuk menyesuaikan dengan masalah spesifik Anda:
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
Dan sekarang tercetak seperti yang diharapkan:
Progress 0.0%
Progress 1.0%
Progress 2.0%
Progress 3.0%