Maison >développement back-end >Tutoriel Python >Comment résoudre les problèmes de téléchargement d'images à l'aide du module de requêtes de Python ?

Comment résoudre les problèmes de téléchargement d'images à l'aide du module de requêtes de Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-21 08:24:11166parcourir

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

Dépannage du téléchargement d'images avec le module de requêtes

Question :

Lors de la tentative de téléchargement d'une image en utilisant le module Requests en Python, le code ci-dessous échoue :

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)

Pouvez-vous aider à identifier le problème et suggérer une solution ?

Réponse :

Pour télécharger une image à l'aide du module Requêtes , vous pouvez utiliser l'objet fichier réponse.raw ou parcourir la réponse. Voici les approches :

Utilisation de réponse.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)

Cette approche force la décompression des réponses compressées et utilise Shutil.copyfileobj() pour diffuser les données vers un objet fichier.

Itération Réponse :

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)

Cette approche garantit que les données sont décompressées et lit les données par morceaux de 128 octets. Vous pouvez personnaliser la taille du morceau à l'aide de la méthode Response.iter_content().

Remarques supplémentaires :

  • Ouvrez le fichier de destination en mode binaire ("wb" ) pour empêcher la traduction de nouvelle ligne.
  • Définissez stream=True pour éviter de charger l'intégralité de l'image en mémoire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn