Некоторые программы могут изменять вывод консоли, 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)
Существует на самом деле много пакетов, которые позволяют Вам писать интерфейс командной строки. Я знаю, что щелчок имеет индикатор выполнения , например.
, О, и относительно Вашего требования "чистый Python", что мой друг - что-то, что является unpythonic. Python хочет, чтобы Вы использовали сторонние пакеты.
Хотя надлежащая библиотека является лучшим решением, я хотел бы показать простую альтернативу: используйте \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 /