Некоторые программы могут изменять консольный вывод, wget легко приходит в голову.
Как я могу это сделать в чистом Python? Я знаю, что IPython имеет clear_output (). Я пробовал это, но даже это не работает. И я бы предпочел чистый Python.
from IPython.core.display import clear_output
from time import sleep
for i in range(100):
clear_output()
print '[', '='*i, ' '*(100-i), ']'
sleep(0.1)
Хотя правильная библиотека - лучшее решение, я хотел бы показать простую альтернативу: используйте \r (возврат каретки) вместо \n (строка) для окончаний строки, чтобы этот курсор был помещен в начале текущей строки, а не на следующей строке.
#! /usr/bin/python3
from time import sleep
for i in range(100):
print('[' + '='*i + ' '*(100-i) + ']', end='\r')
sleep(0.1)
Решение, намеченное Helio, отлично работает! Сначала мне нужно было pip install progressbar, но тогда один из официальных примеров работает как прелесть.
from progressbar import *
pbar = ProgressBar(widgets=[Percentage(), Bar()], maxval=300).start()
for i in range(300):
time.sleep(0.01)
pbar.update(i+1)
pbar.finish()
Официальный сайт (с примерами): https://code.google.com/p/python-progressbar /