Как я моделирую счетчик прогресса в приложении командной строки в Python?

Моя программа Python делает серию вещей и печатает некоторый диагностический вывод. Я также хотел бы иметь счетчик прогресса как это:

Percentage done: 25%

где число увеличивается "на месте". Если бы я использую только строковые операторы, я могу записать отдельные числа, но это создало бы помехи экрану. Там некоторый путь состоит в том, чтобы достигнуть этого, например, с помощью некоторого символа Escape для клавиши Backspace, чтобы очистить число и записать следующее?

Спасибо

5
задан CRP 22 April 2010 в 08:18
поделиться

2 ответа

Вот пример для отображения процента чтения файла:

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)
6
ответ дан 13 December 2019 в 22:04
поделиться

Решение для бедняков:

  import time
  for i in range(10):
    print "\r", i,
    time.sleep(1)

Уловка - это оператор печати. Возврат каретки ("\ r") возвращает курсор в первый столбец той же строки, не начиная новую строку. Завершающая запятая "," указывает print также не создавать новую строку.

В зависимости от вашего вывода вы можете захотеть дополнить оператор печати завершающими пробелами, чтобы гарантировать, что фрагменты из более длинных предыдущих строк не мешают вашему текущему оператору печати. Вероятно, лучше всего собрать строку фиксированной длины для любой информации о ходе выполнения.

4
ответ дан 13 December 2019 в 22:04
поделиться
Другие вопросы по тегам:

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