ホームページ >バックエンド開発 >Python チュートリアル >Python のリクエスト モジュールを使用してイメージのダウンロードの問題を解決する方法

Python のリクエスト モジュールを使用してイメージのダウンロードの問題を解決する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-21 08:24:11171ブラウズ

How to Fix Image Download Issues Using Python's Requests Module?

リクエスト モジュールを使用したイメージ ダウンロードのトラブルシューティング

質問:

イメージのダウンロード試行中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() メソッドを使用してチャンク サイズをカスタマイズできます。

追加メモ:

  • 宛先ファイルをバイナリ モード ('wb') で開きます
  • 画像全体が読み込まれないようにするには、stream=True を設定します。記憶。

以上がPython のリクエスト モジュールを使用してイメージのダウンロードの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。