Maison >développement back-end >Tutoriel Python >Comment télécharger des fichiers depuis le Web dans Python 3 ?

Comment télécharger des fichiers depuis le Web dans Python 3 ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-04 03:53:01849parcourir

How to Download Files from the Web in Python 3?

Téléchargement de fichiers à partir du Web dans Python 3

Introduction

Lors de la création de programmes qui interagissent avec Internet, il est souvent nécessaire de télécharger des fichiers à partir d'un serveur Web. Dans Python 3, il existe plusieurs façons d'accomplir cette tâche.

Solution Python 3

Le code initialement fourni rencontre une erreur car la fonction attend un type d'octet pour l'argument URL, mais le code extrait L'URL du fichier JAD est une chaîne. Pour télécharger un fichier lorsque l'URL est stockée sous forme de chaîne, convertissez-le en type d'octet à l'aide de l'encodage UTF-8 :

<code class="python">import urllib.request

def downloadFile(URL=None):
    h = urllib.request.urlopen(URL.encode('utf-8'))
    return h.read()

downloadFile(URL_from_file)</code>

Solutions alternatives :

Il existe plusieurs méthodes alternatives pour télécharger des fichiers depuis le web :

  • urllib.request.urlopen : Obtenez le contenu d'une page web en lisant la réponse d'urlopen :

    <code class="python">response = urllib.request.urlopen(URL)
    data = response.read() # a `bytes` object
    text = data.decode('utf-8') # a `str`</code>
  • urllib.request.urlretrieve : Téléchargez et enregistrez un fichier localement :

    <code class="python">urllib.request.urlretrieve(URL, file_name)</code>
  • urllib.request. urlopenshutil.copyfileobj : Offre une approche hautement recommandée et la plus correcte pour le téléchargement de fichiers :

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      shutil.copyfileobj(response, out_file)</code>
  • urllib.request.urlopen écrire dans l'objet bytes : Option plus simple, mais recommandée uniquement pour les petits fichiers :

    <code class="python">with urllib.request.urlopen(URL) as response, open(file_name, 'wb') as out_file:
      data = response.read() # a `bytes` object
      out_file.write(data)</code>

Gestion des données compressées

Enfin, l'extraction des données compressées à la volée est également possible :

<code class="python">url = 'http://example.com/something.gz'
with urllib.request.urlopen(url) as response:
    with gzip.GzipFile(fileobj=response) as uncompressed:
        file_header = uncompressed.read(64) # a `bytes` object</code>

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