Я новичок в python и пишу некоторые скрипты для автоматизации загрузки файлов с FTP-серверов и т. Д. Я хочу показать ход загрузки, но я хочу, чтобы он оставался в том же положении, например:
вывод:
Загрузка файла FooFile.txt [47%]
Я пытаюсь избежать чего-то вроде этого:
Downloading File FooFile.txt [47%]
Downloading File FooFile.txt [48%]
Downloading File FooFile.txt [49%]
Как мне это сделать?
Дубликат : Как я могу печатать поверх текущей строки в приложении командной строки?
python
console-output
scottm
источник
источник
Ответы:
Вы также можете использовать возврат каретки:
источник
\r
в начале строки, и добавить,\x1b[K
чтобы очистить предыдущий текст.print("sample text", end='\r", flush=True)
Python 2
Мне нравится следующее:
Демо-версия:
Python 3
Демо-версия:
Консоль отладчика PyCharm с Python 3
источник
Используйте библиотеку обработки терминала, такую как модуль curses :
источник
Напечатайте символ возврата на обратную сторону
\b
несколько раз, а затем перезапишите старый номер новым номером.источник
print 'Downloading.... \r'
) также не удаляет предыдущие данные, но предотвращает необходимость знать, как далеко назад нужно выполнить резервное копирование.источник
Для Python 3xx:
источник
Оптимальное решение, которое работает для меня:
Это
sys.stdout.flush
важно, иначе это становится действительно неуклюжим, иprint("")
выход из цикла for также важен.ОБНОВЛЕНИЕ : Как уже упоминалось в комментариях,
print
также естьflush
аргумент. Таким образом, следующее также будет работать:источник
flush=True
toprint
, поэтому дополнительныйsys.stdout.flush()
вызов не требуется .источник