По сути, я хочу сделать противоположное тому, что сделал этот парень ... хе-хе.
Сценарий Python: каждый раз выводить новую строку в оболочку, а не обновлять существующую строку
У меня есть программа, которая сообщает мне, как далеко она продвинулась.
for i in some_list:
#do a bunch of stuff.
print i/len(some_list)*100," percent complete"
Итак, если бы len (some_list) было 50, я бы напечатал эту последнюю строку 50 раз. Я хочу напечатать одну строку и постоянно обновлять эту строку. Я знаю, я знаю, что это, вероятно, самый неубедительный вопрос, который вы прочитаете за весь день. Я просто не могу понять, какие четыре слова нужно ввести в Google, чтобы получить ответ.
Обновить! Я попробовал предложение mvds, которое показалось правильным. Новый код
print percent_complete," \r",
Процент выполнения - это просто строка (я впервые абстрагировался, когда пытался быть буквальным). В результате он запускает программу, НИЧЕГО не печатает, пока программа не завершится, а затем печатает «100 процентов выполнено» в одной и только одной строке.
Без возврата каретки (но с запятой, половина предложения mvds) он ничего не печатает до конца. А потом печатает:
0 percent complete 2 percent complete 3 percent complete 4 percent complete
И так далее. Итак, теперь новая проблема заключается в том, что с запятой он не печатается, пока программа не будет завершена.
С возвратом каретки и без запятой он ведет себя так же, как и без него.
sys.stdout.isatty()
чтобы не выплевывать эти вещи, когда вы не работаете в терминале.