Поправляемый вывод консоли в Python

Некоторые программы могут изменять консольный вывод, 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)

clear_output ()

1
задан 12 April 2015 в 23:19

2 ответа

Хотя правильная библиотека - лучшее решение, я хотел бы показать простую альтернативу: используйте \r (возврат каретки) вместо \n (строка) для окончаний строки, чтобы этот курсор был помещен в начале текущей строки, а не на следующей строке.

#! /usr/bin/python3

from time import sleep

for i in range(100):
    print('[' + '='*i + ' '*(100-i) + ']', end='\r')
    sleep(0.1)
11
ответ дан 23 May 2018 в 21:28

Решение, намеченное 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 /

6
ответ дан 23 May 2018 в 21:28

Другие вопросы по тегам:

Похожие вопросы: