Python est devenu en 2026 le langage de référence pour automatiser à peu près tout — renommage en masse de fichiers, extraction de données depuis des sites web, traitement de fichiers Excel, sauvegardes programmées, intégrations avec des API. Sa syntaxe lisible et son écosystème de bibliothèques standard rendent réalisables en une vingtaine de lignes des tâches qui demanderaient des heures en cliquant manuellement. Ce tutoriel construit pas à pas vos premiers scripts d’automatisation avec Python 3.13, depuis l’installation jusqu’à un script qui surveille un dossier, traite un CSV et envoie un rapport quotidien.
Prérequis
- Un poste Linux, macOS ou Windows
- Connexion internet pour télécharger Python et les bibliothèques
- Aucune connaissance préalable en programmation requise
- Un éditeur de texte simple (VS Code recommandé pour les débutants)
- Une heure devant soi pour suivre l’ensemble
Étape 1 — Installer Python 3.13
Python 3.13, sortie en octobre 2024, est la version stable et bénéficie d’un support sécurité jusqu’en octobre 2029 (bug fixes jusqu’en octobre 2026, puis security fixes seules). Sur Windows, l’installateur officiel pose tout en deux clics. Sur macOS, on passe par Homebrew. Sur Linux, le paquet python3.13 de la distribution suffit.
# Windows (PowerShell)
winget install Python.Python.3.13
# macOS
brew install python@3.13
# Ubuntu/Debian (24.10+)
sudo apt install python3.13 python3.13-venv
# Ubuntu 22.04/24.04 LTS — utiliser le PPA deadsnakes
sudo add-apt-repository ppa:deadsnakes/ppa && sudo apt update
sudo apt install python3.13 python3.13-venv
# Vérification (toutes plateformes)
python3 --version # → Python 3.13.x
L’option --version doit afficher 3.13.x (ou plus récent). Si la commande renvoie 3.10 ou 3.11, votre système a une version plus ancienne installée par défaut — utiliser python3.13 --version pour cibler explicitement. Sur Windows, cocher la case « Add to PATH » pendant l’installation, sans quoi python ne sera pas reconnu dans le terminal. Testons immédiatement avec un mini-script.
Étape 2 — Premier script Hello, monde
Créer un fichier hello.py dans n’importe quel dossier, l’ouvrir avec VS Code, et y mettre :
# hello.py
nom = input("Quel est ton nom ? ")
print(f"Bonjour, {nom} ! Bienvenue dans Python.")
python3 hello.py
Le script demande votre nom puis affiche un message. Trois éléments sont à comprendre. input() attend une saisie clavier et retourne une chaîne de caractères. print() affiche dans le terminal. Les f-strings (préfixe f) interpolent les variables directement entre {} — c’est le format moderne, plus lisible que les anciennes méthodes .format() ou %. Si Python répond « command not found », c’est que le PATH n’est pas configuré (cf. étape 1).
Étape 3 — Lire et écrire des fichiers
La majorité des automatisations parlent à des fichiers : lire un texte, le transformer, l’écrire. Python rend cette manipulation triviale grâce au context manager with open(...) qui ferme automatiquement le fichier même si une erreur survient.
# lire.py
from pathlib import Path
fichier = Path("notes.txt")
fichier.write_text("Première ligne\nDeuxième ligne\n", encoding="utf-8")
contenu = fichier.read_text(encoding="utf-8")
print(contenu)
for ligne in contenu.splitlines():
print(f"→ {ligne}")
Le module pathlib est l’API moderne de manipulation des chemins, supérieure aux anciennes fonctions os.path en lisibilité et en sécurité. read_text et write_text gèrent l’ouverture, la lecture/écriture et la fermeture en une ligne. Toujours préciser encoding="utf-8" pour garantir la portabilité entre Windows et Linux — sans ça, les accents peuvent se transformer en caractères corrompus selon le système.
Étape 4 — Renommer en masse les fichiers d’un dossier
C’est la première vraie automatisation utile. Imaginez un dossier de photos nommées IMG_1234.jpg que vous voulez renommer en 2026-vacances-001.jpg.
# renommer.py
from pathlib import Path
dossier = Path("photos")
prefixe = "2026-vacances"
fichiers = sorted(dossier.glob("*.jpg"))
for i, ancien in enumerate(fichiers, start=1):
nouveau = dossier / f"{prefixe}-{i:03d}{ancien.suffix}"
print(f"{ancien.name} → {nouveau.name}")
# ancien.rename(nouveau) # décommenter quand le rendu vous convient
Le pattern print d’abord, exécute ensuite est essentiel pour les scripts qui modifient le système de fichiers : on commente la ligne rename, on lance le script en mode « preview », on vérifie le résultat, puis on décommente. Cette discipline évite les catastrophes type « renommer 3 000 photos avec un mauvais préfixe ». Le format {i:03d} ajoute des zéros à gauche pour avoir un tri alphabétique correct (001, 002, …, 099, 100).
Étape 5 — Traiter un fichier CSV
Les exports comptables, les listes de contacts, les données analytiques arrivent presque toujours en CSV. Python fournit un module standard csv, et la bibliothèque pandas pour les manipulations plus avancées.
pip install pandas openpyxl
# traiter_csv.py
import pandas as pd
df = pd.read_csv("ventes.csv", parse_dates=["date"])
# Filtrer les ventes au-dessus de 100
grosses = df[df["montant"] > 100]
# Calculer le total par client
totaux = df.groupby("client")["montant"].sum().sort_values(ascending=False)
print(totaux.head(10))
# Sauvegarder en Excel
grosses.to_excel("grosses_ventes.xlsx", index=False)
Pandas charge en quelques millisecondes un CSV de 100 000 lignes et propose des opérations vectorisées (filtres, groupby, calculs) qui restent rapides même sur plusieurs millions de lignes. parse_dates convertit automatiquement la colonne en type datetime, indispensable pour grouper par mois ou comparer des plages. La sortie Excel via to_excel nécessite la bibliothèque openpyxl installée séparément.
Étape 6 — Récupérer des données depuis une API
Beaucoup de tâches consistent à interroger un service web (météo, taux de change, statistiques) et à enregistrer le résultat. La bibliothèque requests est l’outil le plus simple pour parler à une API REST.
pip install requests
# meteo.py
import requests
from datetime import date
ville = "Paris"
url = f"https://api.open-meteo.com/v1/forecast?latitude=48.85&longitude=2.35¤t=temperature_2m"
rep = requests.get(url, timeout=10)
rep.raise_for_status()
donnees = rep.json()
temp = donnees["current"]["temperature_2m"]
print(f"{date.today()} — {ville} : {temp} °C")
Trois bonnes pratiques sont à graver. timeout=10 évite que le script reste bloqué si l’API ne répond pas. raise_for_status() lève une exception si la réponse n’est pas OK (404, 500…) — sans ça, on continuerait avec une réponse vide ou une page d’erreur HTML. rep.json() parse automatiquement le JSON en dictionnaire Python. Sur cet exemple, l’API publique open-meteo.com ne nécessite pas d’authentification et retourne la météo en moins de 200 ms.
Étape 7 — Programmer une exécution récurrente
Une fois le script utile, on veut qu’il tourne tous les jours à 8 h sans devoir le lancer à la main. Deux approches : la bibliothèque schedule pour un script qui tourne en arrière-plan, ou la planification système (cron sur Linux/macOS, Task Scheduler sur Windows).
# planificateur.py — version Python pure
import schedule, time
def tache():
print("Exécution à", time.strftime("%H:%M:%S"))
# appeler ici votre script de traitement
schedule.every().day.at("08:00").do(tache)
schedule.every(15).minutes.do(tache)
while True:
schedule.run_pending()
time.sleep(30)
Cette version garde un processus Python actif en permanence — convient pour un poste de travail allumé. Pour un serveur, préférer cron qui survit aux redémarrages. Sur Linux/macOS, crontab -e et ajouter la ligne 0 8 * * * /usr/bin/python3 /chemin/script.py pour exécuter à 8 h chaque jour. Sur Windows, ouvrir le Planificateur de tâches, créer une tâche qui appelle python.exe C:\chemin\script.py avec le déclencheur souhaité.
Étape 8 — Sécurité et bonnes pratiques
Quelques règles de discipline évitent les drames classiques. Cinq points à intégrer dès le premier projet.
| Règle | Pourquoi |
|---|---|
Toujours utiliser un virtualenv (python -m venv .venv) |
Isole les dépendances du projet, évite les conflits |
Stocker les secrets dans un fichier .env (jamais en clair dans le code) |
Empêche un push accidentel sur Git |
Ajouter un .gitignore avec .venv/, .env, __pycache__/ |
Garde le dépôt propre |
Logger plutôt que print en production (import logging) |
Permet de filtrer par niveau et d’archiver |
| Tester avant de déléguer une action destructive | Un mauvais script peut effacer un disque en 30 secondes |
Le pattern minimal d’un script propre tient en cinq lignes au début du fichier : import des modules, lecture des paramètres via argparse ou os.environ, configuration du logger, exécution dans un bloc if __name__ == "__main__":. Cette structure facilite la réutilisation : le même fichier peut être importé comme bibliothèque ou exécuté en script.
Erreurs fréquentes
| Symptôme | Cause | Solution |
|---|---|---|
| « ModuleNotFoundError » | Bibliothèque non installée dans le venv | Activer le venv puis pip install |
| Accents corrompus en lecture/écriture | Encoding non précisé | Toujours encoding="utf-8" |
| Script bloqué sur une requête HTTP | Pas de timeout | Ajouter timeout=10 |
| « Permission denied » lors de rename | Fichier ouvert ailleurs | Fermer l’application qui le tient |
| Cron qui ne s’exécute pas | PATH minimal sans Python | Donner le chemin absolu de python3 |
| « IndentationError » | Mélange tabulations / espaces | Configurer l’éditeur en 4 espaces |
Pour explorer plus loin
- Documentation officielle Python 3.13
- Tutoriel Python Tutorial
- Pandas pandas docs
- Requests requests docs
- schedule schedule docs