これは少し前に書いたもので、本当に満足しています。お気軽にご利用ください。
indexand totalとオプションでtitleorを取ります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()、関心がある場合は、使用している端末の幅に応じて、応答バーが表示されるバージョンもあります。