web-dev-qa-db-ja.com

Pythonリクエストライブラリを使用して大きなファイルを保存する

可能性のある複製:
リクエストを使用して画像をダウンロードする方法

Urlの取得はrequests.getと同じくらい簡単で、生の応答本文を取得してファイルに保存できることを知っていますが、大きなファイルの場合、ファイルに直接ストリーミングする方法はありますか?私はそれまたは何かで映画をダウンロードしている場合のように?

85
Matt Williamson

奇妙なことに、リクエストにはこのための単純なものはありません。応答を反復処理し、それらのチャンクをファイルに書き込む必要があります。

response = requests.get('http://www.example.com/image.jpg', stream=True)

# Throw an error for bad status codes
response.raise_for_status()

with open('output.jpg', 'wb') as handle:
    for block in response.iter_content(1024):
        handle.write(block)

私は通常urllib.urlretrieve()を使用します。動作しますが、セッションまたは何らかの認証を使用する必要がある場合、上記のコードも動作します。

164
Blender