Comment automatiser des tâches répétitives avec Python

L’automatisation de tâches répétitives est une pratique courante pour améliorer l’efficacité et libérer du temps. Python, grâce à sa simplicité et à ses nombreuses bibliothèques, est un langage idéal pour automatiser une grande variété de tâches, que ce soit pour l’administration système, le traitement de données, l’interaction avec des API, ou même la gestion de fichiers. Voici un guide complet pour automatiser des tâches répétitives avec Python.


1. Utiliser les bibliothèques Python pour l’automatisation

a. Automatisation des tâches système avec os et shutil

Les modules os et shutil de Python permettent de manipuler les fichiers et de gérer des répertoires de manière simple et efficace.

Exemple : Organiser des fichiers dans un répertoire

Imaginons que vous ayez un dossier rempli de fichiers et que vous vouliez les organiser en sous-dossiers en fonction de leur type (par exemple, images, documents, vidéos).

pythonCopierModifierimport os
import shutil

# Dossier source et destination
source_dir = '/path/to/source/folder'
destination_dir = '/path/to/destination/folder'

# Création de répertoires pour différents types de fichiers
for filename in os.listdir(source_dir):
    file_path = os.path.join(source_dir, filename)
    
    if os.path.isfile(file_path):
        # Détecter le type de fichier par son extension
        if filename.endswith(('.jpg', '.png', '.gif')):
            folder = 'Images'
        elif filename.endswith(('.pdf', '.txt', '.docx')):
            folder = 'Documents'
        elif filename.endswith(('.mp4', '.avi')):
            folder = 'Videos'
        else:
            folder = 'Others'
        
        # Créer le dossier de destination s'il n'existe pas
        target_folder = os.path.join(destination_dir, folder)
        os.makedirs(target_folder, exist_ok=True)

        # Déplacer le fichier dans le sous-dossier correspondant
        shutil.move(file_path, os.path.join(target_folder, filename))

b. Automatisation de l’envoi d’emails avec smtplib et email

L’envoi automatique d’emails est une tâche courante dans l’automatisation des workflows. Python fournit le module smtplib pour envoyer des emails via un serveur SMTP.

Exemple : Envoi d’un email automatique

pythonCopierModifierimport smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

def send_email(subject, body, to_email):
    from_email = 'your_email@example.com'
    password = 'your_password'

    # Configuration du serveur SMTP
    server = smtplib.SMTP('smtp.example.com', 587)
    server.starttls()  # Sécuriser la connexion
    server.login(from_email, password)

    # Préparer le message
    message = MIMEMultipart()
    message['From'] = from_email
    message['To'] = to_email
    message['Subject'] = subject
    message.attach(MIMEText(body, 'plain'))

    # Envoyer l'email
    server.sendmail(from_email, to_email, message.as_string())
    server.quit()

# Exemple d'utilisation
send_email('Test Subject', 'This is the body of the email.', 'recipient@example.com')

c. Automatisation des tâches web avec selenium

Selenium est une bibliothèque qui permet d’automatiser la navigation web, ce qui est particulièrement utile pour des tâches comme le scraping de données ou l’automatisation des actions sur un site web.

Exemple : Remplir automatiquement un formulaire sur un site web

pythonCopierModifierfrom selenium import webdriver
from selenium.webdriver.common.keys import Keys

# Lancer un navigateur
driver = webdriver.Chrome(executable_path='/path/to/chromedriver')

# Accéder à une page
driver.get('https://www.example.com/form')

# Remplir un formulaire
username_field = driver.find_element_by_name('username')
username_field.send_keys('my_username')

password_field = driver.find_element_by_name('password')
password_field.send_keys('my_password')

# Soumettre le formulaire
password_field.send_keys(Keys.RETURN)

d. Planification des tâches avec schedule

La bibliothèque schedule permet de programmer l’exécution périodique de certaines fonctions à des intervalles réguliers (par exemple, toutes les heures, tous les jours).

Exemple : Exécution d’une fonction toutes les heures

pythonCopierModifierimport schedule
import time

def job():
    print("Tâche exécutée!")

# Planifier la tâche
schedule.every(1).hour.do(job)

# Boucle pour exécuter les tâches planifiées
while True:
    schedule.run_pending()
    time.sleep(1)

e. Manipulation de données avec pandas

pandas est une bibliothèque extrêmement puissante pour le traitement des données, idéale pour automatiser des tâches de manipulation de fichiers CSV, Excel, etc.

Exemple : Nettoyer et analyser des données dans un fichier CSV

pythonCopierModifierimport pandas as pd

# Lire un fichier CSV
df = pd.read_csv('data.csv')

# Nettoyer les données : supprimer les lignes avec des valeurs manquantes
df = df.dropna()

# Calculer la moyenne d'une colonne spécifique
mean_value = df['colonne'].mean()
print(f"Moyenne de la colonne : {mean_value}")

# Sauvegarder le fichier modifié
df.to_csv('data_cleaned.csv', index=False)

2. Utilisation de la planification des tâches pour l’automatisation

Si vous souhaitez automatiser des tâches sans devoir garder un script Python en cours d’exécution, vous pouvez utiliser des outils comme cron (sur Linux/macOS) ou le Planificateur de tâches (sur Windows).

Exemple : Planifier l’exécution d’un script Python avec cron

  • Ouvrez le crontab en utilisant crontab -e dans le terminal.
  • Ajoutez une ligne pour exécuter votre script à une heure spécifique. Par exemple, pour exécuter un script tous les jours à 9h00 :rubyCopierModifier0 9 * * * /usr/bin/python3 /path/to/script.py

3. Automatisation avec des API

Python vous permet aussi d’interagir avec des API pour automatiser l’envoi de requêtes, la récupération de données, ou l’interaction avec des services tiers comme les réseaux sociaux ou les outils de gestion de projets.

Exemple : Récupérer des informations via une API (par exemple, OpenWeatherMap)

pythonCopierModifierimport requests

# API URL et clé
api_key = 'your_api_key'
url = f'http://api.openweathermap.org/data/2.5/weather?q=Paris&appid={api_key}'

response = requests.get(url)
data = response.json()

# Extraire la température
temperature = data['main']['temp']
print(f"La température à Paris est de {temperature}°K.")

Conclusion

Automatiser des tâches répétitives avec Python permet de gagner un temps considérable et d’améliorer l’efficacité dans de nombreux domaines. Avec les bibliothèques comme os, shutil, selenium, pandas, et schedule, Python devient un outil incontournable pour automatiser des tâches courantes liées à la gestion des fichiers, l’envoi d’emails, l’interaction avec des API, et bien plus encore. En fonction de vos besoins, vous pouvez facilement adapter ces techniques pour automatiser des processus dans vos projets professionnels ou personnels.

carle
carle