web-dev-qa-db-fra.com

Enregistrez un fichier volumineux en utilisant la bibliothèque de requêtes Python

Duplicate possible:
Comment télécharger une image à l'aide de requêtes

Je sais que chercher une URL est aussi simple que requests.get et je peux obtenir le corps de la réponse brute et l'enregistrer dans un fichier, mais pour les fichiers volumineux, existe-t-il un moyen de diffuser directement dans un fichier? Par exemple, si je télécharge un film avec ou autre chose?

85
Matt Williamson

Curieusement, les demandes n'ont rien de simple pour cela. Vous devrez parcourir la réponse et écrire ces morceaux dans un fichier:

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)

Je n'utilise généralement que urllib.urlretrieve(). Cela fonctionne, mais si vous devez utiliser une session ou une sorte d'authentification, le code ci-dessus fonctionne également.

164
Blender