Python、requestsとtqdmでダウンロードの進捗を表示する

Twitterでシェア FaceBookでシェア はてなブックマークでシェア

Python - サードパーティ製ライブラリ
2018年11月22日21:14に更新(約21日前)
2018年11月7日20:42に作成(約36日前)

旧ブログ移行記事です。

概要

以下のように、ダウンロードしつつその進捗を表示するメモです。

requeststqdmを使用します。

以前に書いたダウンロードのコードに、tqdmを使用したものになります。

コード

import requests
from tqdm import tqdm


def main():

    file_url = "http://hoghoge.com/music/114.mp3"
    file_size = int(requests.head(file_url).headers["content-length"])

    res = requests.get(file_url, stream=True)
    pbar = tqdm(total=file_size, unit="B", unit_scale=True)
    with open("まいふぁいる.mp3", 'wb') as file:
        for chunk in res.iter_content(chunk_size=1024):
            file.write(chunk)
            pbar.update(len(chunk))
        pbar.close()


if __name__ == "__main__":
    main()

まずダウンロードするファイルの容量を取得します。 requests.headHEADメソッドでのリクエストを行うもので、はヘッダ(メタデータ)の取得だけ行います。

file_size = int(requests.head(file_url).headers["content-length"])

一度に読み込みたくない場合は、stream=Trueとしましょう。

res = requests.get(file_url, stream=True)

totalにはファイルのサイズを入れます。 unit_scale=Trueで、キロ、メガ等に変換されます。 unitは進捗バーの単位です。今回の例だと、MBKBと表示されることになりますね。

pbar = tqdm(total=file_size, unit="B", unit_scale=True)

以下は、具体的には1024づつバーを進めていくことになります。

pbar.update(len(chunk)) 

tqdmとrequestsを使えば、非常に簡単にダウンロードの進捗バーがつくれました!

Twitterでシェア FaceBookでシェア はてなブックマークでシェア

記事にコメントする