この記事は…
qiita.com
参加者の少ない, 初老丸 Advent Calendar 2017 14 日目の記事です.
(what)何をしたかったのか
- Python スクリプト実行時にプログレスバーを出したかった
(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 で囲んであげるだけで以下のようなプログレスバーが表示される.
いい感じ.
コマンドラインでも使える
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
実行すると以下のように表示される.
tar で固めた大量ファイルを展開する時とかに使えそう.
以上
README を見ていると Jupyter でも使えるようだし, Python でスクリプトを作る際には必ず用意したいモジュールの 1 つになると思う.