Edited at

Pythonでprogress barを出す方法

More than 1 year has passed since last update.


はじめに

Pythonで重たいスクリプトを動かしている時に、今どこやっているのかなと気になったことはありませんか?そんな時に以下のコードをお使いください。

@shiracamusさんからシンプルな書き方を教えて頂いたので更新しました。

ありがとうございます。


bar.py

import sys

def flush_progress_bar(barname, rate):
number = int(rate/0.05)+1
#元々の投稿
#bar = ''.join(number*['#']+(20-number)*['-'])
#sys.stdout.write("\r"+barname+" : ["+bar+"] {0:03.2f}%".format(rate*100));

#@shiracamusさんから教えて頂いたシンプルな書き方
bar = ('#' * number).ljust(20, '-')
sys.stdout.write(f"\r{barname} : [{bar}] {rate*100:.2f}%")

def main():
N = 1000000
for i in range(N):
flush_progress_bar("name",i/N)

if __name__ == '__main__':
main()


実行すると以下のようになります。

別のモジュールを使った方法もいくつかあるようですね。