Я написав це деякий час тому і дуже задоволений цим. Сміливо користуйтеся ним.
Він приймає indexі, totalі необов'язково, titleабо bar_length. Після закінчення заміняє годинну склянку галочкою.
⏳ Calculating: [████░░░░░░░░░░░░░░░░░░░░░] 18.0% done
✅ Calculating: [█████████████████████████] 100.0% done
Я включив приклад, який можна запустити для тестування.
import sys
import time
def print_percent_done(index, total, bar_len=50, title='Please wait'):
'''
index is expected to be 0 based index.
0 <= index < total
'''
percent_done = (index+1)/total*100
percent_done = round(percent_done, 1)
done = round(percent_done/(100/bar_len))
togo = bar_len-done
done_str = '█'*int(done)
togo_str = '░'*int(togo)
print(f'\t⏳{title}: [{done_str}{togo_str}] {percent_done}% done', end='\r')
if round(percent_done) == 100:
print('\t✅')
r = 50
for i in range(r):
print_percent_done(i,r)
time.sleep(.02)
У мене також є версія з чуйною смугою прогресу в залежності від ширини терміналу, shutil.get_terminal_size()якщо це цікавить.