Прогресс Бар Питон - PullRequest
0 голосов
/ 16 мая 2018

У меня есть следующий фрагмент кода:

def progressbar(count, total, status=""):
    bar_len = 40
    filled_len = int(round(bar_len * count / float(total)))

    percents = round(100.1 * count / float(total), 1)
    bar = "X" * filled_len + "-" * (bar_len - filled_len)

    print("[{}] {}{} ...{}".format(bar, percents, "%", status),
          end="\r", flush=True)

И для вызова индикатора выполнения:

total = 100
i = 0
while i < total:
    i += 1
    progressbar(i, total, status="Creating stuff")
    time.sleep(1)

Где total - количество итераций.Когда я запускаю этот код, я получаю индикатор выполнения на нескольких строках вместо одной.Любой совет?

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Спасибо всем, кто прокомментировал мою тему, пытаясь помочь.Я получил решение по другому StackOverflow Вопрос: Индикатор выполнения Python 3 ничего не показывает

Итак, я протестировал два способа, которые были успешными.Первый, для печати с использованием sys.stdout:

sys.stdout.write("\r[{}] {}{} ...{}".format(bar, percents, "%", status))
sys.stdout.flush()

А второй, с использованием print (), но с символом \ r перед строкой:

print("\r[{}] {}{} ...{}".format(bar, percents, "%", status),
      end="", flush=True)

Обаработает отлично.Первой нужна система импорта.

0 голосов
/ 16 мая 2018

Я не думаю, что у вас есть какие-либо проблемы в вашем коде.

print("[{}] {}{} ...{}".format(bar, percents, "%", status),
          **end="\r"**, flush=True)

Аргумент end = "\ n" в методе print () должен выводить индикатор выполнения в одну строку.

если вы запустите этот код в терминале, он должен работать нормально.

Ранее я видел проблему с PyCharm IDE, где end = "\ r" не работает. Вероятно, это ошибка в эмуляторе терминала в IDE.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...