Pythonのrequestsモジュールでファイルをダウンロードしたいとする。素直に書くとこう。
import requests
r = requests.get('https://hogehoge/')
with open('hogehoge.zip', 'wb') as f:
f.write(r.content)
ただ、これではファイル全体をメモリに読み込むため、サイズの大きなファイルをダウンロードしようとしてメモリが足りなくなることがあった。
そんなときは、ストリームを使って少しずつ読み書きすればよい。次の例では1MBずつ処理する。
import requests
with requests.get('https://hogehoge/', stream=True) as r:
with open('hogehoge.zip', 'wb') as f:
for chunk in r.iter_content(chunk_size=1024*1024):
f.write(chunk)