🐍 Python — Automatisation & Scripts

Python est mon langage de script de rĂ©fĂ©rence. Il est lisible, polyvalent, et dispose d’un Ă©cosystĂšme immense. Je l’utilise pour automatiser des tĂąches rĂ©pĂ©titives, traiter des donnĂ©es, gĂ©nĂ©rer des fichiers et interagir avec des APIs.

Installation

# macOS — via pyenv (recommandĂ©, Ă©vite de toucher le Python systĂšme)
brew install pyenv
pyenv install 3.12.0
pyenv global 3.12.0
 
# Vérification
python --version  # Python 3.12.0

⚠ Ne jamais modifier le Python systĂšme sur macOS (/usr/bin/python3). Utiliser pyenv ou Homebrew.

Environnements virtuels

Chaque projet doit avoir son propre environnement pour isoler les dépendances.

python -m venv .venv
source .venv/bin/activate   # macOS/Linux
.venv\Scripts\activate      # Windows
deactivate
 
pip install nom-du-package
pip freeze > requirements.txt
pip install -r requirements.txt

BibliothĂšques utiles

import os, sys, pathlib     # systĂšme de fichiers
import json, csv            # formats de données
import datetime             # dates et heures
import re                   # expressions réguliÚres
pip install requests        # requĂȘtes HTTP
pip install beautifulsoup4  # scraping web
pip install pandas          # tableaux de données
pip install pillow          # traitement d'images
pip install python-dotenv   # variables d'environnement
pip install rich            # affichage terminal coloré

Scripts utiles

Renommer des fichiers en masse

from pathlib import Path
 
dossier = Path(".")
for fichier in dossier.glob("*.txt"):
    nouveau_nom = fichier.stem.lower().replace(" ", "_") + fichier.suffix
    fichier.rename(fichier.parent / nouveau_nom)
    print(f"RenommĂ© : {fichier.name} → {nouveau_nom}")

Générer des flashcards Anki depuis un CSV

import csv
 
with open("cours.csv", "r", encoding="utf-8") as f:
    reader = csv.reader(f, delimiter=";")
    cartes = [(row[0], row[1]) for row in reader if len(row) >= 2]
 
with open("anki_export.txt", "w", encoding="utf-8") as f:
    for question, reponse in cartes:
        f.write(f"{question};{reponse}\n")
 
print(f"{len(cartes)} cartes générées.")

RequĂȘte web simple

import requests
 
response = requests.get("https://api.exemple.com/data")
if response.status_code == 200:
    data = response.json()
    print(data)
else:
    print(f"Erreur : {response.status_code}")

Script de sauvegarde automatique

import shutil
from pathlib import Path
from datetime import datetime
 
source = Path.home() / "Documents"
dest = Path("/Volumes/Backup") / f"backup_{datetime.now().strftime('%Y%m%d_%H%M')}"
 
shutil.copytree(source, dest)
print(f"Sauvegarde créée : {dest}")

Automatisation macOS

import subprocess
 
subprocess.run(["open", "-a", "IINA", "/chemin/vers/video.mkv"])
 
subprocess.run([
    "osascript", "-e",
    'display notification "Script terminé" with title "Python"'
])

Bonnes pratiques

#!/usr/bin/env python3
"""Description courte du script."""
 
import sys
from pathlib import Path
 
def main() -> None:
    if len(sys.argv) < 2:
        print("Usage: script.py <argument>")
        sys.exit(1)
    argument = sys.argv[1]
    # ... logique principale
 
if __name__ == "__main__":
    main()

Ressources

Voir aussi