ProgressBar
Python3

pythonでprogressbar

progressbar2

検索して一番上に出てきた日本語の記事が古いせいか微妙に動かなかったので、日本語のメモを残す。
使うライブラリは、python3ならprogressbar2、python2ならprogressbarを使えばいい。
今回使ったのはpython3のprogressbar2なので注意。

from progressbar import ProgressBar

min = 0
max = 100

p = ProgressBar(min, max)

for i in range(100):
    p.update(i)

こんな感じに、第一引数に数値の最小値を設定しないといけなくなった。
僕が参考にしたページではmaxしか設定していなかったのでエラーになって動かなかった。
ちなみに、経過した時間を自動で測定して終了までの推定時間を表示してくれるのが最高に便利。

progressbarにはこれ以外にもアニメーションするアイコンや現在の時間、フォーマットの指定など便利そうな機能があったのでオシャレな待機時間を演出したい方は是非ご利用下さい。

表示フォーマット

デフォルトのフォーマットでも十分に使えるけど、必要なら他にも色々な情報が表示できる。
フォーマットを指定するためには、ProgressBarのwidgetsキーワードにリストとして渡す。
文字列なんかはそのまま表示される。どんなwidgetがあるかは公式のドキュメント見ればなんとなく分かると思う。
どうも内部で関数の実行なんかもできるっぽいのでやろうと思えばオリジナルの拡張なんかも書けそう。

import progressbar
import time

prog_bar = progressbar.ProgressBar(0, 100, widgets=[
        progressbar.CurrentTime(), ':',
        '(', progressbar.Counter(), ' of {}) '.format(100),
        progressbar.Bar(),
        ' ', progressbar.ETA(),
    ])

for i in range(0, 100):
    prog_bar.update(i)
    time.sleep(1)

これで現在の時刻とカウンター、プログレスバー、推定終了時間が表示されるようになった。