ようへいの日々精進XP

よかろうもん

Python でお気軽にプログレスバー

この記事は...

qiita.com

参加者の少ない, 初老丸 Advent Calendar 2017 14 日目の記事です.

(what)何をしたかったのか

(why)なぜやりたかったのか

  • ながーい処理をさせる際に, ざっくりでも構わないので進捗を知りたかった

やったこと

tqdm

ググったら一瞬で出てきた.

github.com

ドキュメントも充実していて, Github のスターも 4700 を超えている.

Hello tqdm

試す環境は Python 3.6.2 で.

$ python --version
Python 3.6.2

tqdm のインストールは pip で済ませてある前提.

from time import sleep
from tqdm import tqdm

for i in tqdm(range(10)):
    sleep(0.1)

range() を tqdm で囲んであげるだけで以下のようなプログレスバーが表示される.

f:id:inokara:20171216075243p:plain

いい感じ.

コマンドラインでも使える

Python のモジュールだけではなく, コマンドラインからも利用出来る.

$ tqdm --help | less
Usage:
  tqdm [--help | options]

Options:
  -h, --help     Print this help and exit
  -v, --version  Print version and exit

  --desc=<desc>  : str, optional
            Prefix for the progressbar.
...
  --buf_size=<buf_size>  : int, optional
            String buffer size in bytes [default: 256]
            used when `delim` is specified.
  --bytes=<bytes>  : bool, optional
            If true, will count bytes and ignore `delim`.

例えば, files ディレクトリ以下に 100 個のファイルを作り...

touch files/test_{1..100}.txt

そして, このファイルを ls する際にプログレスバーを出してみたりする.

$ ls files/* | tqdm --unit_scale --total $(ls files/* | wc -l) > /dev/null

実行すると以下のように表示される.

f:id:inokara:20171216080749p:plain

tar で固めた大量ファイルを展開する時とかに使えそう.

以上

README を見ていると Jupyter でも使えるようだし, Pythonスクリプトを作る際には必ず用意したいモジュールの 1 つになると思う.