Télécharger un fichier en Python

Siddharth Swami 30 janvier 2023
  1. Utilisez le module requests pour télécharger des fichiers en Python
  2. Utilisez le module urllib pour télécharger des fichiers en Python
  3. Utilisez le module pycurl pour télécharger des fichiers en Python
Télécharger un fichier en Python

Python est très fréquemment utilisé pour accéder aux ressources sur Internet. Nous pouvons générer des requêtes et des connexions en utilisant différentes bibliothèques. De telles bibliothèques peuvent également nous aider à télécharger ou à lire des fichiers HTTP à partir du Web.

Dans ce tutoriel, nous allons télécharger des fichiers depuis Internet en Python.

Utilisez le module requests pour télécharger des fichiers en Python

Nous pouvons utiliser le module requests pour récupérer des informations et lire des pages Web sur Internet.

La méthode get() permet de récupérer le chemin du fichier à partir de l’URL donnée, à partir de laquelle le fichier doit être téléchargé. La méthode open() crée un objet fichier où l’on souhaite enregistrer le fichier, puis la fonction write() est utilisée pour écrire le contenu du fichier dans le chemin souhaité.

Nous utilisons ces fonctions pour télécharger un fichier, comme indiqué ci-dessous.

import requests as req

URL = "https://www.facebook.com/favicon.ico"
file = req.get(url, allow_redirects=True)

open("facebook.ico", "wb").write(file.content)

Production:

1150

Le code ci-dessus télécharge un fichier de logo de Facebook à partir de son URL et le stocke dans le répertoire de travail. Nous pouvons spécifier n’importe quel chemin dans la fonction open(), mais nous devons l’ouvrir en mode wb. Cela indique que nous avons l’intention d’écrire un fichier en mode binaire.

L’exemple ci-dessus convient au téléchargement de fichiers plus petits mais ne fonctionne pas efficacement pour les fichiers volumineux. La fonction file.content est utilisée pour obtenir le contenu du fichier sous la forme d’une seule chaîne. Comme nous avons utilisé un petit fichier dans l’exemple ci-dessus, cela a fonctionné correctement.

Si nous devons télécharger un gros fichier, nous devons utiliser la fonction file.iter_content() dans laquelle nous spécifierons la taille du morceau. Il télécharge les données sous forme de morceaux.

Nous utilisons cette fonction dans l’exemple suivant.

import requests

URL = "http://codex.cs.yale.edu/avi/db-book/db4/slide-dir/ch1-2.pdf"

file = requests.get(URL, stream=True)

with open("Python.pdf", "wb") as pdf:
    for chunk in file.iter_content(chunk_size=1024):

        if chunk:
            pdf.write(chunk)

Utilisez le module urllib pour télécharger des fichiers en Python

On peut aussi utiliser la bibliothèque urllib en Python pour télécharger et lire des fichiers depuis le web. Il s’agit d’un module de gestion d’URL qui a différentes fonctions pour effectuer la tâche donnée.

Ici aussi, nous devons spécifier l’URL du fichier à télécharger. La méthode urllib.request.urlopen() récupère le chemin du fichier et envoie une requête au serveur sur lequel le fichier est en cours de téléchargement.

Pour télécharger des fichiers, nous pouvons utiliser la fonction urllib.request.urlretrieve(). Il téléchargera la ressource à partir de l’adresse donnée et la stockera dans le répertoire fourni.

Nous téléchargeons l’icône de Facebook en utilisant cette méthode dans l’exemple suivant.

import urllib

urllib.request.urlretrieve("https://www.facebook.com/favicon.ico", "fb.ico")

Production:

('fb.ico', <http.client.HTTPMessage at 0x2d2d317a088>)

La sortie ci-dessus indique que le fichier a été téléchargé avec succès.

Utilisez le module pycurl pour télécharger des fichiers en Python

Nous pouvons utiliser la gestion des fichiers avec ce module pour télécharger des fichiers depuis Internet. Tout d’abord, nous devons créer un objet fichier pour l’endroit où nous souhaitons télécharger le fichier requis. Ensuite, nous utiliserons la fonction pycurl.Curl() pour créer un objet et lancer la session curl.

La méthode setopt() est utilisée pour définir la valeur de l’URL du fichier. Ensuite, la fonction perform() effectue le processus de transfert de fichier depuis le serveur en envoyant la requête HTTP. Ensuite, nous écrirons les données récupérées dans le fichier à l’aide de l’objet file. Enfin, la méthode close() ferme la session, et nous récupérons notre fichier téléchargé dans le répertoire de travail.

Voir le code ci-dessous.

import pycurl

file_name = "fb.ico"
file_src = "https://www.facebook.com/favicon.ico"

with open(file_name, "wb") as f:
    cl = pycurl.Curl()
    cl.setopt(cl.URL, file_src)
    cl.setopt(cl.WRITEDATA, f)
    cl.perform()
    cl.close()