リクエスト モジュールを使用したイメージ ダウンロードのトラブルシューティング
質問:
イメージのダウンロード試行中Python の Requests モジュールを使用する場合、以下のコード失敗:
r = requests.get(settings.STATICMAP_URL.format(**data)) if r.status_code == 200: img = r.raw.read() with open(path, 'w') as f: f.write(img)
問題を特定して解決策を提案していただけますか?
回答:
リクエスト モジュールを使用してイメージをダウンロードするには、response.raw ファイル オブジェクトを利用するか、応答を反復処理することができます。アプローチは次のとおりです。
response.raw の使用:
import requests import shutil r = requests.get(settings.STATICMAP_URL.format(**data), stream=True) if r.status_code == 200: with open(path, 'wb') as f: r.raw.decode_content = True shutil.copyfileobj(r.raw, f)
このアプローチでは、圧縮された応答を強制的に解凍し、shutil.copyfileobj() を使用してデータをストリーミングします。ファイル オブジェクト。
反復処理応答:
r = requests.get(settings.STATICMAP_URL.format(**data), stream=True) if r.status_code == 200: with open(path, 'wb') as f: for chunk in r: f.write(chunk)
このアプローチでは、データが確実に解凍され、128 バイトのチャンクでデータが読み取られます。 Response.iter_content() メソッドを使用してチャンク サイズをカスタマイズできます。
追加メモ:
以上がPython のリクエスト モジュールを使用してイメージのダウンロードの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。