Python

Automatiser vos tâches répétitives avec Python : le guide pratique

Renommer des fichiers en masse, scraper une page, envoyer des emails et planifier le tout avec cron : un tour d'horizon concret pour automatiser votre quotidien de développeur avec Python.

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.txt du 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

Malick Diallo

Rédaction SenTur

Contributeur SenTur — passionné de tech et de transmission.

Aucun commentaire pour l'instant — lancez la discussion !

Laisser un commentaire

Votre adresse email ne sera pas publiée. La discussion est modérée — restez courtois et constructif.