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 à partir d’une URL stockée sous forme de chaîne dans Python 3 ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-04 06:48:01174parcourir

How to Download a File from a URL Stored as a String in 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!

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