Combien de fois par semaine renommez-vous des fichiers à la main, copiez-collez des données d’une page web vers un tableur, ou envoyez le même email de rapport ? Ces gestes prennent deux minutes chacun, mais répétés cent fois, ils grignotent vos journées. La bonne nouvelle : Python excelle précisément dans ce rôle de « robot de tâches ingrates ». Dans cet article, nous allons construire une petite boîte à outils d’automatisation, du renommage de fichiers à la planification automatique, en passant par le scraping léger et l’envoi d’emails.
Objectif : à la fin de cette lecture, vous saurez écrire un script utile, le rendre robuste, et le faire tourner tout seul chaque matin sans y penser. Aucun framework lourd, juste la bibliothèque standard et deux ou trois paquets bien choisis.
1. Manipuler les fichiers avec pathlib
Oubliez les concaténations de chaînes avec des barres obliques. Depuis Python 3.4, le module pathlib traite les chemins comme de vrais objets, portables entre Windows, Linux et macOS. C’est la base de toute automatisation de fichiers.
Imaginons un dossier rempli de photos exportées avec des noms incohérents, que vous voulez renommer proprement avec un préfixe et un numéro.
from pathlib import Path
dossier = Path.home() / "Documents" / "photos_chantier"
for index, fichier in enumerate(sorted(dossier.glob("*.jpg")), start=1):
nouveau_nom = f"chantier_dakar_{index:03d}{fichier.suffix}"
cible = fichier.with_name(nouveau_nom)
fichier.rename(cible)
print(f"{fichier.name} -> {cible.name}")
Quelques points utiles ici : glob("*.jpg") ne récupère que les images JPEG, enumerate(..., start=1) numérote à partir de 1, et le format {index:03d} garantit un affichage sur trois chiffres (001, 002…). Le fichier.suffix conserve l’extension d’origine, ce qui évite de la coder en dur.
Un piège fréquent : écraser des fichiers sans le vouloir
La méthode rename() écrase silencieusement un fichier existant sur la plupart des systèmes. Si deux fichiers se retrouvent avec le même nom cible, vous perdez des données. Prenez toujours l’habitude de tester avant d’agir :
Avant tout script qui modifie ou supprime des fichiers, lancez d’abord une version « à blanc » qui se contente d’afficher ce qu’elle ferait. Vérifiez la sortie, puis seulement activez l’écriture réelle. Cette discipline vous évitera des nuits blanches.
2. Scraping léger : récupérer des données d’une page web
Beaucoup de tâches répétitives consistent à relever une information sur un site : un taux de change, une liste de prix, le titre des derniers articles. Pour les pages simples, le duo requests + BeautifulSoup suffit largement. Installez-les avec pip install requests beautifulsoup4.
import requests
from bs4 import BeautifulSoup
url = "https://example.com/actualites"
reponse = requests.get(url, timeout=10, headers={"User-Agent": "MonBot/1.0"})
reponse.raise_for_status()
soup = BeautifulSoup(reponse.text, "html.parser")
titres = [balise.get_text(strip=True) for balise in soup.select("h2.titre-article")]
for titre in titres:
print("-", titre)
Notez le timeout=10 : sans lui, votre script peut se figer indéfiniment si le serveur ne répond pas. L’appel raise_for_status() lève une erreur explicite si la page renvoie un code 404 ou 500, plutôt que de continuer avec du contenu vide.
Deux règles de courtoisie et de bon sens à respecter :
- Consultez le fichier
robots.txtdu site et ses conditions d’utilisation avant de scraper. - Espacez vos requêtes avec un
time.sleep()pour ne pas surcharger le serveur, surtout en boucle. - Privilégiez une API officielle quand elle existe : c’est plus stable et plus respectueux que de gratter le HTML.
3. Envoyer un email automatiquement
Une fois vos données collectées, vous voudrez souvent les envoyer par email : un rapport quotidien, une alerte, un récapitulatif. Le module smtplib de la bibliothèque standard et email.message font le travail.
import os
import smtplib
from email.message import EmailMessage
message = EmailMessage()
message["Subject"] = "Rapport quotidien automatisé"
message["From"] = "robot@mondomaine.com"
message["To"] = "moi@mondomaine.com"
message.set_content("Bonjour,nnVoici les titres collectés ce matin.nnLe robot")
with smtplib.SMTP_SSL("smtp.gmail.com", 465) as serveur:
serveur.login("robot@mondomaine.com", os.environ["EMAIL_MDP"])
serveur.send_message(message)
print("Email envoyé.")
Point de sécurité capital : ne mettez jamais votre mot de passe en clair dans le code. Ici nous le lisons depuis une variable d’environnement (os.environ["EMAIL_MDP"]). Avec Gmail, utilisez d’ailleurs un « mot de passe d’application » dédié, pas votre mot de passe principal. Cette variable se définit dans votre terminal avant de lancer le script, par exemple export EMAIL_MDP="xxxx" sous Linux.
4. Planifier l’exécution avec cron
Un script qui automatise une tâche mais qu’il faut lancer à la main reste à moitié automatisé. Sous Linux et macOS, cron est l’outil de planification universel. On édite sa liste de tâches avec crontab -e, puis on ajoute une ligne décrivant la fréquence et la commande.
# m h jour mois jour_semaine commande
# Tous les jours à 7h00, lancer le rapport
0 7 * * * /usr/bin/python3 /home/aminata/scripts/rapport.py >> /home/aminata/logs/rapport.log 2>&1
Les cinq champs représentent dans l’ordre : minute, heure, jour du mois, mois, jour de la semaine. La redirection >> ... 2>&1 envoie la sortie normale et les erreurs vers un fichier journal, indispensable pour diagnostiquer un script qui échoue en silence à 7h du matin.
Le piège du chemin absolu
L’erreur la plus courante avec cron : utiliser des chemins relatifs. Cron ne s’exécute pas depuis votre dossier habituel et ne connaît pas vos variables d’environnement. Indiquez toujours le chemin complet de l’interpréteur Python et du script. Sous Windows, l’équivalent s’appelle le Planificateur de tâches (Task Scheduler), qui offre une interface graphique pour le même résultat.
Récapitulatif
Vous disposez maintenant des quatre briques essentielles de l’automatisation en Python :
- pathlib pour parcourir et renommer des fichiers de façon portable et lisible.
- requests + BeautifulSoup pour extraire des données d’une page web, avec respect et timeout.
- smtplib pour envoyer des emails sans jamais exposer vos identifiants.
- cron pour faire tourner le tout automatiquement, journaux à l’appui.
Le secret d’une bonne automatisation n’est pas la complexité du code, mais sa fiabilité : testez à blanc, journalisez tout, et protégez vos secrets. Commencez petit, avec la tâche qui vous agace le plus aujourd’hui, transformez-la en script de vingt lignes, et planifiez-la. Vous venez de gagner du temps pour le restant de l’année.
Pour aller plus loin
- Git et GitHub : prendre de bonnes habitudes — versionner proprement votre code dès le départ.
- Intégrer un LLM dans votre application — appeler un modèle, streaming, coûts et erreurs.
Aucun commentaire pour l'instant — lancez la discussion !