Оптимальное решение, которое работает для меня:
from __future__ import print_function
import sys
for i in range(10**6):
perc = float(i) / 10**6 * 100
print(">>> Download is {}% complete ".format(perc), end='\r')
sys.stdout.flush()
print("")
Значение sys.stdout.flush
важно, иначе оно становится действительно неуклюжим, и также важно print("")
для выхода из цикла.
ОБНОВЛЕНИЕ : Как уже упоминалось в комментариях, print
также имеет аргумент flush
. Таким образом, следующее также будет работать:
from __future__ import print_function
for i in range(10**6):
perc = float(i) / 10**6 * 100
print(">>> Download is {}% complete ".format(perc), end='\r', flush=True)
print("")