Télécharger des Fichiers Texte et Image en Python peut vous aider à automatiser des tâches de téléchargement et de traitement des données. En utilisant les bibliothèques Python adaptées, vous pouvez simplifier le processus de récupération de fichiers à partir d’URL et d’autres sources, ce qui peut être très utile pour des projets de scraping web, de traitement d’images, et bien plus encore. Explorons ensemble comment télécharger des fichiers texte et image avec Python à travers des exemples pratiques.
Introduction au Téléchargement de Fichiers en Python
Python offre plusieurs bibliothèques robustes pour télécharger des fichiers depuis Internet. requests
est l’une des plus populaires pour ses fonctions simples et puissantes permettant d’effectuer des requêtes HTTP. Pour le traitement des images, la bibliothèque Pillow
est couramment utilisée. Nous allons voir comment utiliser ces bibliothèques pour télécharger et enregistrer des fichiers texte et image.
Télécharger un Fichier Texte en Python
Pour télécharger un fichier texte, nous allons utiliser la bibliothèque requests
, qui permet de faire des requêtes HTTP de manière simple et intuitive. Suivez les étapes ci-dessous pour comprendre comment télécharger et enregistrer un fichier texte :
import requests
# URL du fichier texte à télécharger
url = 'https://example.com/data.txt'
# Effectuer la requête HTTP GET pour obtenir le contenu du fichier
response = requests.get(url)
# Vérifier si la requête a réussi
if response.status_code == 200:
# Enregistrer le contenu dans un fichier local
with open('data.txt', 'w') as file:
file.write(response.text)
print("Fichier texte téléchargé et enregistré avec succès.")
else:
print("Erreur de téléchargement du fichier texte.")
Télécharger une Image en Python
Poursuivons avec le téléchargement d’une image. Nous utilisons également la bibliothèque requests
tout en ajoutant la bibliothèque Pillow
pour manipuler et enregistrer l’image :
from PIL import Image
import requests
from io import BytesIO
# URL de l'image à télécharger
url = 'https://example.com/image.jpg'
# Effectuer la requête HTTP GET pour obtenir l'image
response = requests.get(url)
# Vérifier si la requête a réussi
if response.status_code == 200:
# Ouvrir l'image à partir du contenu de la réponse
img = Image.open(BytesIO(response.content))
# Enregistrer l'image localement
img.save('image.jpg')
print("Image téléchargée et enregistrée avec succès.")
else:
print("Erreur de téléchargement de l'image.")
Télécharger plusieurs Fichiers dans une Liste
Il est aussi possible de télécharger plusieurs fichiers en une seule fois. Nous allons créer une liste d’URL et utiliser une boucle pour télécharger chacun des fichiers :
import os
import requests
# Liste d'URL de fichiers à télécharger
urls = [
'https://example.com/text1.txt',
'https://example.com/text2.txt',
'https://example.com/image1.jpg',
'https://example.com/image2.jpg',
]
# Répertoire où enregistrer les fichiers
save_dir = 'downloads'
os.makedirs(save_dir, exist_ok=True)
# Télécharger chaque fichier de la liste
for url in urls:
try:
response = requests.get(url)
if response.status_code == 200:
file_name = os.path.join(save_dir, os.path.basename(url))
with open(file_name, 'wb') as file:
file.write(response.content)
print(f"Téléchargé: {file_name}")
else:
print(f"Erreur de téléchargement pour l'URL: {url}")
except Exception as e:
print(f"Exception pour l'URL {url}: {e}")
Gérer les Erreurs lors du Téléchargement
Lors du téléchargement de fichiers, divers types d’erreurs peuvent se produire (ex. : URL incorrecte, interruption de connexion). Il est donc important de gérer ces erreurs correctement pour éviter que votre programme ne plante. Voici comment vous pouvez le faire en utilisant des blocs try-except
:
import requests
# URL du fichier à télécharger
url = 'https://example.com/missingfile.txt'
try:
# Essayer de télécharger le fichier
response = requests.get(url)
response.raise_for_status() # Lancer une exception pour les codes d'état HTTP 4xx/5xx
# Enregistrer le fichier localement
with open('missingfile.txt', 'w') as file:
file.write(response.text)
print("Fichier téléchargé et enregistré avec succès.")
except requests.exceptions.HTTPError as http_err:
print(f"Erreur HTTP: {http_err}") # Erreurs HTTP spécifiques
except Exception as err:
print(f"Autre erreur: {err}") # Toute autre erreur
Téléchargement Asynchrone de Fichiers
Pour améliorer la performance du téléchargement de fichiers multiples, nous pouvons utiliser la bibliothèque aiohttp
pour effectuer des requêtes HTTP asynchrones. Voici un exemple de téléchargement de fichiers de manière asynchrone :
import aiohttp
import asyncio
import os
# Liste d'URL de fichiers à télécharger
urls = [
'https://example.com/image1.jpg',
'https://example.com/image2.jpg',
]
# Répertoire où enregistrer les fichiers
save_dir = 'downloads'
os.makedirs(save_dir, exist_ok=True)
async def download_file(session, url):
try:
async with session.get(url) as response:
response.raise_for_status()
file_name = os.path.join(save_dir, os.path.basename(url))
with open(file_name, 'wb') as file:
file.write(await response.read())
print(f"Téléchargé: {file_name}")
except Exception as e:
print(f"Erreur pour l'URL {url}: {e}")
async def main():
async with aiohttp.ClientSession() as session:
tasks = [asyncio.create_task(download_file(session, url)) for url in urls]
await asyncio.gather(*tasks)
# Exécuter le programme asynchrone
asyncio.run(main())
Utiliser des En-Têtes et des paramètres pour des requêtes HTTP
Lors du téléchargement de fichiers, vous pouvez avoir besoin d’ajouter des en-têtes HTTP ou des paramètres de requête pour accéder aux fichiers protégés ou filtrer le contenu. Voici comment passer des en-têtes et des paramètres dans une requête de téléchargement :
import requests
# URL du fichier à télécharger
url = 'https://example.com/protectedfile.txt'
# En-têtes HTTP
headers = {
'Authorization': 'Bearer your_access_token',
'User-Agent': 'your_app_name',
}
# Paramètres de requête
params = {
'download': 'true',
}
# Télécharger le fichier avec en-têtes et paramètres
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
with open('protectedfile.txt', 'w') as file:
file.write(response.text)
print("Fichier téléchargé et enregistré avec succès.")
else:
print(f"Erreur de téléchargement du fichier: {response.status_code}")
Conclusion
Télécharger des fichiers texte et image en Python est une opération simple et couramment utilisée dans divers projets. En utilisant des bibliothèques comme requests et Pillow, vous pouvez facilement automatiser le processus de récupération et de stockage de données depuis Internet. Continuez à explorer les vastes possibilités offertes par Python pour améliorer et optimiser vos tâches de téléchargement de fichiers. Pour plus de tutoriels et astuces Python, visitez notre section tutoriels Python.
Apprendre à installer Python sur Linux peut également vous être utile car cela vous fournira une base solide pour exécuter des scripts sur divers systèmes d’exploitation. En outre, comprendre comment effectuer des saisies utilisateurs en Python vous aidera à rendre vos scripts interactifs, ce qui est crucial dans des scénarios où des actions doivent être confirmées par l’utilisateur avant de passer au téléchargement de fichiers.
Si vous débutez avec Python, il est également recommandé de lire sur la compréhension des variables en Python. Cette base, combinée avec connaissances sur l’utilisation des opérateurs mathématiques, peut vous simplifier considérablement la mise en œuvre de scripts de téléchargement de fichiers complexes.
N’oubliez pas que de nombreuses ressources externes peuvent vous être utiles également. Consultez la documentation officielle de Requests pour une compréhension approfondie, ou explorez les pratiques avancées en programming Python pour des astuces plus professionnelles.