Cursus
Cet article propose un guide complet de l'utilisation de Python pour l'automatisation. Nous couvrons les concepts essentiels, les bibliothèques clés, les cas d'utilisation réels et les meilleures pratiques pour aider les lecteurs à concevoir et à construire des solutions d'automatisation efficaces sur . Si vous êtes sur votre parcours d'apprentissage de Python, assurez-vous de consulter notre parcours de compétences Fondamentaux de la programmation Python pour accélérer vos études.
Qu'est-ce que l'automatisation Python ?
Python est un langage informatique populaire, et ce pour de bonnes raisons. Sa syntaxe est claire, facile à apprendre et à comprendre. Il offre un support de bibliothèque étendu pour une gamme d'applications.
Il existe des outils pour les systèmes de fichiers tels que os
, shutil
, et pathlib
. Pour le traitement des données, nous disposons de pandas
et openpyxl
. schedule
, time
et threading
peuvent vous aider à planifier des tâches.
L'automatisation des tâches manuelles fastidieuses est un cas d'utilisation pratique de Python. Pourquoi rédiger manuellement ce rapport et envoyer des courriels tous les mois ? Écrivez un script Python pour le faire à votre place.
Principes fondamentaux de l'automatisation en Python
Python est un choix intéressant pour l'automatisation. Sa simplicité et la prise en charge d'un grand nombre de bibliothèques le rendent accessible même aux non-développeurs.
Pour rafraîchir les bases de Python, consultez ces ressources de DataCamp.
- Cours sur la boîte à outils de programmation Python
- Python Cheat Sheet for Beginners (en anglais) cheat sheet (en anglais)
Avantages
Il offre plusieurs avantages clés pour l'automatisation. La faible barrière à l'entrée permet aux utilisateurs d'accomplir des tâches complexes en quelques lignes de code seulement. Le développement rapide, le débogage simplifié et l'évolutivité le rendent adapté aux flux d'automatisation avancés, y compris les intégrations cloud, les API et les microservices.
Cas d'utilisation courants
La manipulation de fichiers est une tâche couramment automatisée. Les scripts renomment, déplacent ou organisent les fichiers en fonction des conventions de dénomination, des types de fichiers ou des horodatages. L'automatisation est souvent utilisée pour télécharger, nettoyer, traiter et sauvegarder des données web en vue d'une utilisation ultérieure.
Une autre application de routine consiste à générer des rapports de synthèse et à les distribuer par courrier électronique. Les scripts mettent à jour les feuilles de calcul en insérant de nouvelles données, en calculant des formules, en appliquant un formatage ou en générant des graphiques et des visualisations. Un autre cas d'utilisation courant est l'interaction avec les applications web. Il s'agit notamment d'extraire des données, de soumettre des formulaires et d'intégrer des services.
Prenons un exemple. Le script ci-dessous utilise os
et shutil
pour automatiser l'organisation des fichiers PDF, démontrant ainsi un scénario clair et commun de gestion de fichiers.
import os
import shutil
source_folder = 'Downloads'
destination_folder = 'Documents/PDFs'
# Move all PDF files from Downloads to PDFs folder
for filename in os.listdir(source_folder):
if filename.endswith('.pdf'):
shutil.move(
os.path.join(source_folder, filename),
os.path.join(destination_folder, filename)
)
Concepts de base de l'automatisation Python
Il existe plusieurs fondements que vous devez connaître lorsqu'il s'agit de l'automatisation de Python :
Langue interprétée
Comment Python exécute-t-il les scripts ? Python est un langage interprété. Cela signifie qu'il exécute le code une ligne à la fois pendant l'exécution. Il ne compile pas au préalable l'ensemble du programme en code machine.
Cette fonctionnalité permet des tests et un développement rapides, sans qu'il soit nécessaire de procéder à une compilation. En contrepartie, l'exécution peut être plus lente que celle des langages compilés.
Les scripts ont généralement une extension .py et sont exécutés à partir de la ligne de commande à l'aide d'une commande telle que python my_script.py
. Pour plus d'informations sur l'exécution des scripts Python (), reportez-vous à notre didacticiel intitulé Comment exécuter des scripts Python.
Les scripts peuvent être programmés pour s'exécuter automatiquement à l'aide de planificateurs système tels que Task Scheduler
sous Windows ou cron
sous Linux et macOS. Les bibliothèques Python telles que schedule
ou APScheduler
permettent un contrôle programmatique.
Modèle entrée-processus-sortie
Les scripts d'automatisation utilisent un modèle simple d'entrée, de processus et de sortie. Ce modèle est courant dans les flux de travail de programmation. Lors de la phase d'entrée, le script recueille des données provenant de plusieurs sources. Il s'agit notamment de fichiers locaux, de bases de données, d'API web et d'entrées utilisateur.
Au cours de la phase de traitement, le script transforme, filtre et analyse les données. Dans la phase de sortie, le script fournit des résultats par le biais de différentes méthodes. Il peut écrire dans un fichier, envoyer un courrier électronique, envoyer des résultats à une API ou les enregistrer dans une base de données. Ce flux rend les scripts d'automatisation prévisibles et réutilisables. Il est également facile de les intégrer dans des systèmes plus vastes.
Planification avec Python
Python fournit des bibliothèques comme schedule
et APScheduler
pour automatiser la planification des tâches :
Fonctionnalité |
calendrier |
APScheduler |
Complexité |
Léger, en cours de fabrication |
Avancé, prend en charge la persistance |
Capacités d'ordonnancement |
Intervalles fixes |
Expressions Cron, intervalles, temps exacts |
Persistance |
Non persistant (uniquement en mémoire) |
Stockage permanent via des bases de données |
Types de planificateurs |
Ordonnanceur unique |
Plusieurs back-ends ( |
Choisissez schedule
pour les tâches simples et récurrentes et APScheduler pour les besoins avancés de planification de la production.
Prenons un exemple de planification de tâches en utilisant schedule
pour illustrer la planification de tâches, en montrant comment un script exécute de manière répétée une tâche de reporting à intervalles réguliers.
import schedule
import time
def job():
print("Generating monthly report...")
# Schedule the job every month
schedule.every(30).days.at("08:00").do(job)
while True:
schedule.run_pending()
time.sleep(60)
Gestion des erreurs
Python comprend une prise en charge intégrée de la gestion des erreurs par l'intermédiaire des blocs try/except
. Ce mécanisme d'erreur permet aux scripts d'anticiper et de gérer les erreurs sans se bloquer. Le script capture les exceptions spécifiques pour enregistrer les problèmes en vue d'un examen ultérieur. Il fournit également des messages d'erreur et se rétablit de manière gracieuse pour continuer à fonctionner.
Bibliothèques Python de base pour l'automatisation
Il existe des bibliothèques Python de base pour l'automatisation des interfaces graphiques, l'automatisation du web et le traitement des données.
Automatisation de l'interface graphique avec pyautogui
La bibliothèque pyautogui
permet d'automatiser les tâches de l'interface graphique. Pour ce faire, il imite les actions humaines telles que le déplacement de la souris, le clic, la frappe et le repérage des éléments de l'écran. Il convient mieux aux tâches d'automatisation légères et visuelles pour lesquelles l'interface reste cohérente. Il n'est pas adapté aux interfaces dynamiques ou complexes, car il repose uniquement sur les pixels et ne tient pas compte du contexte.
PyAutoGUI prend en charge un large éventail de scénarios d'automatisation du bureau. Il peut effectuer des tâches répétitives sur votre ordinateur. Il simule les clics, les frappes et la navigation dans des applications telles qu'Excel. Les développeurs l'utilisent souvent pour valider la fonctionnalité de l'interface de bureau en imitant le comportement de l'utilisateur. Pour les jeux, il peut automatiser des actions simples grâce à des macros. Cependant, les joueurs doivent être prudents. De nombreux jeux n'autorisent pas l'automatisation et peuvent punir les comptes qui l'utilisent.
Automatisation du Web : Selenium et Playwright
Selenium est un outil largement utilisé pour automatiser les navigateurs web, connu pour sa maturité, le soutien important de la communauté et sa compatibilité avec les navigateurs et les langues. Il s'intègre bien aux cadres de test établis tels que JUnit, TestNG et NUnit, ce qui le rend idéal pour les systèmes hérités et les environnements d'entreprise complexes. Cependant, les scripts Selenium nécessitent souvent des attentes explicites et une configuration supplémentaire, ce qui entraîne des frais généraux de maintenance plus élevés, en particulier pour les applications dynamiques à forte composante JavaScript.
Playwright, quant à lui, est une bibliothèque d'automatisation moderne offrant une mise en attente automatique, une gestion native des onglets multiples et des API unifiées pour les principaux navigateurs (y compris WebKit). Il excelle dans les tests de frameworks frontaux dynamiques tels que React, Vue et Angular, ce qui le rend bien adapté aux tests de bout en bout rapides et fiables dans les pipelines CI/CD.
Pour plus d'informations sur les tests en Python, veuillez consulter le cours Introduction aux tests en Python. Pour plus de détails sur les tests unitaires, reportez-vous au tutoriel Test unitaire en Python.
Traitement des données avec pandas et openpyxl
Les bibliothèques Python pandas
et openpyxl
sont des outils puissants pour l'automatisation des feuilles de calcul.
pandas
excelle dans la manipulation de données structurées. Il peut lire et écrire des données CSV, Excel ou SQL, nettoyer et transformer des ensembles de données, agréger des statistiques et fusionner des ensembles de données. Les cas d'utilisation courants de l'automatisation comprennent la création de rapports Excel ou CSV automatisés, le nettoyage de grands ensembles de données et la préparation des données pour les tableaux de bord ou l'archivage.
openpyxl
gère spécifiquement les fichiers Excel (.xlsx). Il peut lire, écrire et formater des feuilles de calcul, effectuer des mises en forme conditionnelles, insérer des formules et ajouter des graphiques. L'automatisation de la génération de rapports et la mise à jour de modèles de feuilles de calcul en sont des exemples typiques.
Un flux de travail commun combine pandas pour l'analyse des données et openpyxl pour la présentation. Pour les grands ensembles de données, pandas est généralement plus rapide. Notez également qu'openpyxl ne prend en charge que les fichiers Excel 2007+ (.xlsx) et n'évalue pas les formules - Excel s'en charge lui-même à l'ouverture.
L'exemple ci-dessous illustre l'utilisation de pandas pour automatiser une tâche de reporting de routine. Il lit les données de vente d'un fichier CSV, supprime les doublons, remplit les valeurs manquantes, puis exporte les données nettoyées directement dans une feuille de calcul Excel prête à être distribuée ou à faire l'objet d'une analyse plus poussée.
import pandas as pd
# Load data from a CSV file
df = pd.read_csv('monthly_sales.csv')
# Data cleaning: remove duplicates and handle missing values
df_cleaned = df.drop_duplicates().fillna(0)
# Save the cleaned dataset as an Excel report
df_cleaned.to_excel('cleaned_sales_report.xlsx', index=False)
Ce flux de travail peut facilement être programmé (par exemple, à l'aide de cron) et étendu. Par exemple, l'intégration avec l'automatisation du courrier électronique pour envoyer automatiquement des rapports mensuels.
Applications pratiques d'automatisation en Python
Python est largement utilisé pour automatiser des tâches du monde réel, du web scraping à l'automatisation des courriels et bien plus encore.
Récupération de données sur Internet
L'une des applications les plus répandues est le "web scraping". Lorsqu'un accès officiel et structuré est disponible, les API sont probablement la meilleure option. Si ce n'est pas le cas, une bibliothèque telle que Beautiful Soup ou Scrapy peut être utilisée pour extraire des données directement à partir de HTML.
Beautiful Soup est idéal pour récupérer des données sur des sites dont le code HTML est simple et stable. Il est relativement facile à apprendre et à utiliser. Cependant, elle nécessite une compréhension détaillée de la structure de la page. Si la présentation du site change, le code du scraper peut facilement s'interrompre.
Scrapy est adapté à des cas d'utilisation plus complexes. Sa prise en charge de l'exécution asynchrone le rend suffisamment rapide et efficace pour explorer des sites web de grande taille comportant de nombreuses pages. Les résultats peuvent être exportés vers JSON, CSV ou des bases de données.
Voici un exemple simple qui illustre l'extraction d'un contenu structuré à partir d'une page web simple en utilisant Beautiful Soup
et requests
:
import requests
from bs4 import BeautifulSoup
# Fetch the webpage
response = requests.get('https://example.com')
soup = BeautifulSoup(response.text, 'html.parser')
# Extract all headlines
headlines = soup.find_all('h2')
for headline in headlines:
print(headline.text.strip())
Pour plus d'informations sur Python et le web scraping, consultez ces ressources.
- Cours Web Scraping in Python (en anglais)
- Tutoriel sur le Web Scraping avec Python (et Beautiful Soup)
- Tutoriel Web Scraping & NLP en Python
- Comment utiliser Python pour scraper le tutoriel d'Amazon
Automatisation des courriels
Le module intégré à Python smtplib
permet aux scripts d'envoyer des courriels de manière programmatique en utilisant le protocole SMTP. Il est généralement utilisé pour automatiser la communication au sein d'un flux de travail plus large.
Les cas d'utilisation typiques sont l'envoi de rapports programmés, la diffusion d'alertes d'erreur ou d'alertes système à partir de tâches automatisées, la notification d'événements ou de mises à jour aux administrateurs ou aux utilisateurs, et la mise en pièce jointe de fichiers de sortie.
Voici un exemple de script permettant d'envoyer un courrier électronique avec un fichier en pièce jointe.
import smtplib
from email.message import EmailMessage
# Connect to email provider's SMTP server
# e.g., gmail uses smtp.gmail.com on port 587
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login("your_email@gmail.com", "your_app_password")
# Compose email
msg = EmailMessage()
msg["Subject"] = "Automation Alert"
msg["From"] = "your_email@gmail.com"
msg["To"] = "recipient@example.com"
msg.set_content("This is an automated message.")
# Attach files
with open("report.pdf", "rb") as f:
msg.add_attachment(f.read(), maintype="application", subtype="pdf", filename="report.pdf")
# Send the email
server.send_message(msg)
server.quit()
Architectures d'automatisation avancées
Python offre des outils puissants pour gérer la planification et la coordination des tâches automatisées. Des bibliothèques comme APScheduler et des plateformes comme Apache Airflow fournissent des solutions flexibles, robustes et évolutives.
APScheduler
Advanced Python Scheduler (APScheduler) est une bibliothèque prête à la production qui offre des options avancées de planification. Il est idéal pour automatiser les flux de travail récurrents.
APScheduler permet d'exécuter des tâches à des dates précises, à des intervalles fixes ou à des expressions de type cron (tous les lundis à 8 heures).
Il prend en charge le stockage persistant des tâches via des bases de données, de sorte que les données persistent après les redémarrages. Les différents types d'ordonnanceurs prennent en charge différents cas d'utilisation : BackgroundScheduler
pour les tâches non bloquantes, AsyncIOScheduler
pour les applications asynchrones et BlockingScheduler
pour les scripts en ligne de commande. L'exécution du travail et les erreurs peuvent être enregistrées pour un débogage ou un contrôle ultérieur.
Les cas d'utilisation les plus courants sont la génération de rapports, l'envoi d'e-mails programmés, l'exécution de contrôles de santé, l'exécution de travaux ETL et la maintenance de la base de données.
Airflow Apache
Apache Airflow est une plateforme d'entreprise open source qui automatise, planifie, gère et surveille les flux de travail. Il s'agit d'un système robuste, transparent et reproductible que les organisations utilisent couramment pour orchestrer l'ETL, le ML, l'ingénierie des données et la génération de rapports.
Pour utiliser Apache Airflow, écrivez un flux de travail en Python afin de définir les tâches et l'ordre dans lequel elles s'exécutent, et définissez le calendrier de démarrage du flux de travail. Airflow exécute chaque tâche au bon moment, surveille le flux de travail et envoie des alertes en cas de problème. Son tableau de bord web permet de contrôler les flux de travail et de vérifier les journaux.
Tendances émergentes en matière d'automatisation Python
Python joue un rôle central dans les dernières nouveautés en matière d'automatisation. Des tendances telles que la prise de décision pilotée par l'IA et le cloud computing sans serveur étendent les capacités de l'automatisation.
L'apprentissage automatique permet aux systèmes d'automatisation de prendre des décisions intelligentes fondées sur des données. Cette intégration se traduit par une plus grande flexibilité et adaptabilité que la logique traditionnelle basée sur des règles.
Le ML analyse les données historiques pour prévoir les événements. Ces événements déclenchent des capacités d'automatisation. Par exemple, un système peut prévoir les pannes d'équipement et programmer la maintenance avant que les problèmes ne surviennent. ML peut également recommander des réponses. Par exemple, un système de détection des fraudes peut signaler les transactions suspectes par carte de crédit en fonction du comportement détecté dans les données, et non pas seulement en fonction de seuils. Les LLM génèrent des projets de rapport à partir des données. Cela réduit le travail manuel et accélère la création de contenu.
Pour en savoir plus sur l'IA et l'automatisation, consultez les documents suivants.
- Développement d'un cursus de compétences en matière d'applications d'intelligence artificielle.
- Construire des agents LangChain pour automatiser des tâches en Python tutoriel
- Tutoriel DeepChecks : Automatiser les tests d'apprentissage automatique tutorial
Automatisation basée sur le cloud
Avec l'informatique sans serveur, les fournisseurs de cloud gèrent l'infrastructure, ce qui permet aux développeurs de se concentrer sur la logique et les flux de travail d'automatisation.
Le terme "sans serveur" fait référence au fait que les développeurs n'ont pas besoin de gérer ou d'approvisionner des serveurs ; cela ne signifie évidemment pas qu'il n'y a pas de serveurs. Des services tels que AWS Lambda, Google Cloud Functions et Azure Functions permettent d'exécuter des scripts Python en réponse à des événements.
Cette approche présente plusieurs avantages. Il élimine la responsabilité de l'utilisateur pour les machines virtuelles ou les conteneurs. Les fonctions sans serveur s'adaptent automatiquement à la demande, en déployant davantage de ressources pendant les périodes de fort trafic, comme les événements de vente en ligne. Le modèle est rentable, puisque les utilisateurs ne paient que pour le temps de calcul qu'ils utilisent.
Meilleures pratiques pour une automatisation fiable
Voici quelques conseils pour l'automatisation de processus en Python :
Techniques de traitement des erreurs
Une gestion efficace des erreurs permet aux scripts d'automatisation de se rétablir avec élégance. Suivez ces bonnes pratiques pour gérer les exceptions.
- Utilisez des blocs try/except spécifiques. N'attrapez que les exceptions auxquelles vous vous attendez, et non pas toutes les erreurs en général. Par exemple, écrivez un bloc spécifique pour traiter les erreurs de division par zéro plutôt qu'un collecteur d'erreurs générique.
- Utilisez
finally
. Un blocfinally
assure le nettoyage. Les variables peuvent être réinitialisées, les ressources abandonnées. - Erreurs d'enregistrement. Les erreurs doivent être enregistrées en vue d'un contrôle ultérieur, et non simplement imprimées.
- Comportements par défaut. Pour les défaillances non critiques, prévoyez des valeurs par défaut ou des solutions de repli raisonnables.
- Échouer rapidement et clairement. Si l'échec est irrécupérable, levez une exception ou quittez le système prématurément en envoyant un message clair.
Gestion de la configuration
L'utilisation de variables d'environnement est une bonne pratique car elle permet de séparer la configuration du code. Pour améliorer la sécurité, conservez les données sensibles telles que les mots de passe, les identifiants de base de données et les clés d'API en dehors du code source, en particulier lorsque vous utilisez le contrôle de version.
Les variables d'environnement permettent à différents environnements, tels que le développement, la mise en scène et la production, d'utiliser la même base de code avec des paramètres différents. Cette approche simplifie le déploiement dans les environnements cloud et facilite la maintenance, car les changements de configuration ne nécessitent pas de modifier le code lui-même.
Optimisation des performances
L'optimisation des scripts d'automatisation garantit que les programmes s'exécutent plus rapidement, utilisent moins de ressources et s'adaptent plus efficacement. Ceci est particulièrement important pour les grands ensembles de données, les processus sensibles au temps ou les tâches fréquemment exécutées.
Quelques stratégies clés pour l'optimisation des performances :
- Minimiser les travaux redondantsk. Évitez de recalculer des valeurs ou d'interroger plusieurs fois les mêmes données. Utilisez la mémorisation ou stockez les résultats intermédiaires si nécessaire.
- Utilisez des bibliothèques efficacess. Choisissez des bibliothèques légères, conçues à cet effet, qui minimisent les frais généraux. Par exemple, utilisez
pandas
au lieu de boucles manuelles. - Utilisez des structures de données efficaces. De même, utilisez des structures de données qui minimisent les frais généraux. Par exemple, utilisez set ou dict au lieu de listes pour des recherches plus rapides.
- Résultats du cache. Mettre en cache les résultats d'opérations coûteuses ou fréquentes à l'aide de magasins en mémoire ou de caches externes.
- Batch. Les opérations par lots, telles que les écritures dans les fichiers, les insertions dans les bases de données, sont regroupées en lots afin de réduire les frais généraux.
- Exécution parallèle/concurrente. Utilisez le threading ou le multiprocessing pour les tâches parallélisables, telles que le traitement de fichiers ou la transformation d'ensembles de données.
- Profil et code de référence. Utilisez des outils tels que
cProfile
,line_profiler
outimeit
pour identifier les goulets d'étranglement et les sections du code qui doivent être optimisées.
Conclusion
Python est un langage puissant et polyvalent pour l'automatisation. Qu'il s'agisse d'automatiser des tâches simples comme le renommage de fichiers ou de construire des flux de travail complexes avec des outils comme Airflow, Python fournit les outils nécessaires à une automatisation fiable. En utilisant les conseils de ce guide, les lecteurs peuvent automatiser les tâches répétitives. Si vous en êtes encore à votre parcours d'apprentissage de Python, n'oubliez pas de consulter notre cursus sur les fondamentaux de la programmation Python afin d'accélérer votre apprentissage.
FAQ sur l'automatisation Python
Pourquoi utiliser Python pour l'automatisation ?
La syntaxe simple de Python, son riche écosystème de bibliothèques et sa compatibilité multiplateforme en font un choix attrayant pour les développeurs comme pour les non-développeurs.
Puis-je automatiser des tâches Excel avec Python ?
Oui. Utilisez la bibliothèque pandas
pour le traitement des données et 'openpyxl' pour créer, éditer et styliser des fichiers Excel de manière programmatique.
Le web scraping est-il légal ?
Le "web scraping" est légal dans de nombreux cas, en particulier lorsque les données sont publiques, mais vérifiez toujours les conditions d'utilisation du site web. Pour les données structurées, envisagez d'utiliser une API si elle est disponible.
Comment stocker les paramètres de configuration en toute sécurité ?
Utilisez des variables d'environnement pour gérer les configurations telles que les clés d'API et les identifiants de base de données, en les séparant du code source.

Mark Pedigo, PhD, est un éminent scientifique des données, spécialisé dans la science des données de santé, la programmation et l'éducation. Titulaire d'un doctorat en mathématiques, d'une licence en informatique et d'un certificat professionnel en intelligence artificielle, Mark allie connaissances techniques et résolution de problèmes pratiques. Au cours de sa carrière, il a joué un rôle dans la détection des fraudes, la prédiction de la mortalité infantile et les prévisions financières, et a contribué au logiciel d'estimation des coûts de la NASA. En tant qu'éducateur, il a enseigné à DataCamp et à l'université Washington de St. Louis et a encadré des programmeurs juniors. Pendant son temps libre, Mark profite de la nature du Minnesota avec sa femme Mandy et son chien Harley, et joue du piano jazz.