Моя программа Python делает серию вещей и печатает некоторый диагностический вывод. Я также хотел бы иметь счетчик прогресса как это:
Percentage done: 25%
где число увеличивается "на месте". Если бы я использую только строковые операторы, я могу записать отдельные числа, но это создало бы помехи экрану. Там некоторый путь состоит в том, чтобы достигнуть этого, например, с помощью некоторого символа Escape для клавиши Backspace, чтобы очистить число и записать следующее?
Спасибо
Вот пример для отображения процента чтения файла:
from sys import *
import os
import time
Size=os.stat(argv[1])[6] #file size
f=open(argv[1],"r");
READED_BYTES=0
for line in open(argv[1]): #Read every line from the file
READED_BYTES+=len(line)
done=str(int((float(READED_BYTES)/Size)*100))
stdout.write(" File read percentage: %s%% %s"%(done,"\r"))
stdout.flush();
time.sleep(1)
Решение для бедняков:
import time
for i in range(10):
print "\r", i,
time.sleep(1)
Уловка - это оператор печати. Возврат каретки ("\ r") возвращает курсор в первый столбец той же строки, не начиная новую строку. Завершающая запятая "," указывает print также не создавать новую строку.
В зависимости от вашего вывода вы можете захотеть дополнить оператор печати завершающими пробелами, чтобы гарантировать, что фрагменты из более длинных предыдущих строк не мешают вашему текущему оператору печати. Вероятно, лучше всего собрать строку фиксированной длины для любой информации о ходе выполнения.