Maison > Article > développement back-end > Comment télécharger un fichier à partir d’une URL stockée sous forme de chaîne dans Python 3 ?
Comment télécharger un fichier depuis le Web dans Python 3 avec une URL stockée dans une chaîne
Lors d'une tentative de téléchargement d'un fichier à partir d'un serveur Web dans Python 3, le passage d'une chaîne comme URL peut entraîner une erreur exigeant la saisie d'octets. Cet article présente plusieurs méthodes pour contourner ce problème et réussir à récupérer le fichier.
Utiliser urllib.request.urlopen
Pour obtenir le contenu d'une page Web, utilisez urllib .request.urlopen(). Cette fonction renvoie un objet de réponse, qui peut ensuite être lu dans une variable :
<code class="python">import urllib.request url = 'http://example.com/' response = urllib.request.urlopen(url) data = response.read() # a `bytes` object</code>
Utiliser urlib.request.urlretrieve
Le moyen le plus simple de télécharger et enregistrer un fichier consiste à utiliser la fonction urllib.request.urlretrieve :
<code class="python">import urllib.request url = 'http://example.com/file.txt' urllib.request.urlretrieve(url, 'file.txt')</code>
Cette méthode télécharge le fichier à partir de l'URL spécifiée et l'enregistre localement sous 'file.txt'.
Utilisation de urlib.request.urlopen avecshutil.copyfileobj
Pour un meilleur contrôle sur le processus de téléchargement, utilisez urllib.request.urlopen() pour renvoyer un objet de type fichier. Cet objet peut ensuite être copié dans un fichier réel en utilisantshuil.copyfileobj() :
<code class="python">import urllib.request import shutil url = 'http://example.com/file.zip' with urllib.request.urlopen(url) as response, open('file.zip', 'wb') as out_file: shutil.copyfileobj(response, out_file)</code>
Stockage du téléchargement en octets
Si la vitesse est une priorité, le les données téléchargées peuvent être stockées directement dans un objet bytes et ensuite écrites dans un fichier, bien que cela ne convienne qu'aux petits fichiers :
<code class="python">import urllib.request url = 'http://example.com/icon.png' with urllib.request.urlopen(url) as response, open('icon.png', 'wb') as out_file: data = response.read() # a `bytes` object out_file.write(data)</code>
Gestion des fichiers compressés
urllib.request.urlopen() peut également être utilisé pour gérer des fichiers compressés, à condition que le serveur prenne en charge l'accès aléatoire :
<code class="python">import urllib.request import gzip url = 'http://example.com/archive.gz' with urllib.request.urlopen(url) as response: with gzip.GzipFile(fileobj=response) as uncompressed: file_header = uncompressed.read(64) # a `bytes` object</code>
En implémentant l'une de ces méthodes, les développeurs peuvent réussir à télécharger des fichiers depuis le Web dans Python 3. , même lorsque l'URL est stockée sous forme de chaîne.
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!