Возврат каретки в 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)