Lorsque vous essayez de télécharger une image depuis Internet à l'aide du module de requêtes de Python, vous pouvez rencontrer des problèmes avec le code par rapport à l'utilisation de l'urlopen d'urllib2. méthode. Cet article aborde ces défis et propose des solutions.
img = urllib2.urlopen(settings.STATICMAP_URL.format(**data)) with open(path, 'w') as f: f.write(img.read())
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)
Le problème se produit lors de l'utilisation de requêtes car l'attribut de la réponse qui contient les données d'image est différent de celui de urlopen dans urllib2.
Pour récupérer les données d'image de la réponse à la requête, il existe deux options :
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)
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)
En définissant stream=True dans l'appel de requêtes, cela empêche le téléchargement simultané de l'image entière en mémoire. Le fichier doit être ouvert en mode binaire pour éviter les erreurs.
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!