はじめに
七尾百合子さん、お誕生日 63日目 おめでとうございます! nikkieです。
Devinに書いてもらったPythonコードからの学びです1
目次
requestsでダウンロードするスクリプトでプログレスバーを表示
100%|████████████████████████████████████████████████████████| 41.2M/41.2M [00:06<00:00, 6.71MB/s]
for item in tqdm(iterable)
のようにだけ使っていたtqdm。
with
でコンテキストマネージャとして使う方法を知りました。
https://github.com/tqdm/tqdm/tree/v4.67.1?tab=readme-ov-file#manual
pbar
を手動(manual)でupdate
することで、プログレスバーになるのです!
tqdm()
のパラメタについて
https://tqdm.github.io/docs/tqdm/#tqdm-objects
total
: HTTPレスポンスの Content-Length2 を指定(100%でダウンロード完了になりますね)unit
: 単位。デフォルトは"it"
ですがここでは"B"
を指定unit_scale=True
: kilo, megaのように単位を自動変換(これは便利!)
requests以外のHTTPクライアントでどうなるか、Claude 3.7 Sonnetに教えてもらいました。
HTTPXバージョン
HTTPXはrequestsのAPIとの互換性を意識していますが、streamはrequestsとは違うんですよね〜3
https://www.python-httpx.org/quickstart/#streaming-responses
標準ライブラリurllibバージョン
urllib、ストリームで扱えるんですね!(チョット私の理解が甘いかも)
終わりに
PythonでHTTP通信のダウンロード、完全理解です!
with tqdm()
、HTTPレスポンスヘッダのContent-Lengthから設定。
そしてunit_scale=True
が便利です!
- SpeechRecognitionのメンテナ活動からです ↩
- https://developer.mozilla.org/ja/docs/Web/HTTP/Reference/Headers/Content-Length↩
- 過去記事 ↩