でかいファイルをダウンロード中に、後どれくらいかかるのか、あるいは、ファイルがきちんとダウンロードされたのかを知ることは重要なので、今回は、ダウンロードの進行状況を知らせるprogress bar(プログレスバー)を表示させるコードを書くことにした。
tqdmというモジュールを使うといいらしいので、早速インストールした。
conda install tqdm (pip install tqdm)
ファイルは以下のコードで簡単にダウンロードできる。urlにファイルが置いてあるサイトのアドレスを指定して、filenameにダウンロードするファイル名を指定する。
import requests
url = "https://some-url.com/some.zip"
filename = "some.zip"
r = requests.get(url, stream=True)
url = "https://some-url.com/some.zip"
filename = "some.zip"
r = requests.get(url, stream=True)
tqdmを利用するには以下のようにモジュールをインポートする。
from tqdm import tqdm
こうすることで、tqdmモジュールをpbarとして使えるようになる。
pbar = tqdm(total=total_size, unit='B', unit_scale=True)
tqdmはtotalを指定しないとprogress barを出さないので注意が必要だ。
最終的なコードは以下のような簡素なものになる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | from tqdm import tqdm import requests url = "https://github.com/xrubio/evolvingPlanet/archive/master.zip" filename = "master.zip" r = requests.get(url, stream=True) total_size = int(r.headers.get('content-length', 0)); chunk_size = 32 * 1024 downloaded = 0 pbar = tqdm(total=total_size, unit='B', unit_scale=True) with open(filename, 'wb') as f: for data in r.iter_content(chunk_size): f.write(data) downloaded+=len(data) pbar.update(chunk_size) if total_size != 0 and downloaded != total_size: print("ERROR, download failed") |
このコードを実行させると以下のようなアウトプットを吐き出す。
Pretty neat huh?
スポンサーリンク
スポンサーリンク