Возврат каретки в tqdm.write()

У меня проблемы с использованием возврата каретки с tqdm.write()

Этот код работает отлично, он делает анимацию вращающегося бара

step = 0
for x in range (0,50):
    animation = {0: '|',
                 1: '/',
                 2: '-',
                 3: '\\'
                 }[step]
    tqdm.write(animation, end='\r')
    step = (step+1) % 4
    time.sleep(0.1)

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

bar = tqdm(total=100)  # Here
step = 0
for x in range (0,50):
    animation = {0: '|',
                 1: '/',
                 2: '-',
                 3: '\\'
                 }[step]
    tqdm.write(animation, end='\r')
    step = (step+1) % 4
    time.sleep(0.1)

У меня есть только отображение индикатора выполнения.

Есть идеи?

1 ответ

Решение

Об этом сообщалось как о проблеме на официальном tqdm github.

https://github.com/tqdm/tqdm/issues/520

Автор предложил исправить с помощью префикса вместо конца

from time import sleep
from tqdm import tqdm, trange
from tqdm._utils import _term_move_up


prefix = _term_move_up() + '\r'
print('')
for x in trange(50):
    tqdm.write(prefix + "|/-\\"[x % 4])
    sleep(0.1)
Другие вопросы по тегам