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.
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>
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>
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!