Introduction
Cette collection de scripts Python propose des solutions pratiques pour des tâches variées, allant de la gestion de fichiers multimédias à l'interaction avec des APIs, en passant par des outils de surveillance ou d'analyse. L'objectif principal est de simplifier le quotidien des développeurs et des utilisateurs grâce à l'automatisation et à des fonctionnalités efficaces.
Chaque section comprend :
Une description de l'objectif et de l'utilité du script.
Les limites et les risques potentiels liés à son utilisation.
Le code complet et commenté pour une implémentation directe.
Avant de commencer, assurez-vous d'avoir Python installé sur votre système. Vous pouvez installer les modules requis avec pip
, le gestionnaire de paquets de Python.
Installation des modules avec pip
Certains scripts nécessitent des modules spécifiques comme opencv-python
, psutil
, ou beautifulsoup4
. Pour installer un module, utilisez la commande suivante dans votre terminal ou invite de commande :
pip install nom_du_module
Par exemple, pour installer les modules nécessaires à plusieurs scripts :
pip install opencv-python beautifulsoup4 requests psutil
Pour afficher tous les modules installés, utilisez :
pip list
1. Organisation des Fichiers Multimédias
Objectif : Trier automatiquement les fichiers téléchargés en les classant par type (images, vidéos, documents, etc.).
Utilité : Facilite la gestion des fichiers en les séparant dans des dossiers dédiés.
Limites et Dangers :
Limites : Ne gère pas les fichiers portant le même nom.
Dangers : Un déplacement incorrect peut entraîner des pertes de données importantes.
Code complet :
import os
from pathlib import Path
# Dossier à organiser
dossier = "C:\\Users\\VotreNom\\Téléchargements"
# Extensions par catégorie
EXTENSIONS = {
"Images": [".png", ".jpg", ".jpeg", ".gif"],
"Vidéos": [".mp4", ".avi", ".mov"],
"Documents": [".pdf", ".txt", ".docx"],
"Audio": [".mp3", ".wav"],
}
# Trier les fichiers
fichiers = os.listdir(dossier)
for fichier in fichiers:
chemin = os.path.join(dossier, fichier)
if os.path.isfile(chemin):
extension = Path(fichier).suffix.lower()
for categorie, liste_extensions in EXTENSIONS.items():
if extension in liste_extensions:
dossier_cible = os.path.join(dossier, categorie)
os.makedirs(dossier_cible, exist_ok=True)
nouveau_chemin = os.path.join(dossier_cible, fichier)
os.rename(chemin, nouveau_chemin)
print(f"Déplacé : {fichier} → {categorie}")
break
2. Lecture et Modification d'un Fichier Texte
Objectif : Lire un fichier texte, ajouter des numéros de ligne, et enregistrer les modifications dans un nouveau fichier.
Utilité : Idéal pour annoter des fichiers texte, comme des journaux ou des rapports.
Limites et Dangers :
Limites : Ne prend en charge que les fichiers texte simples.
Dangers : Risque d'écrasement des fichiers originaux en cas de mauvaise sauvegarde.
Code complet :
# Lire un fichier et ajouter des numéros de ligne
with open("fichier.txt", "r") as fichier:
contenu = fichier.readlines()
contenu_modifie = [f"{i}: {ligne}" for i, ligne in enumerate(contenu, start=1)]
# Sauvegarder dans un nouveau fichier
with open("fichier_modifie.txt", "w") as nouveau_fichier:
nouveau_fichier.writelines(contenu_modifie)
print("Fichier modifié sauvegardé sous 'fichier_modifie.txt'.")
3. Capture d'Image avec la Caméra
Objectif : Prendre une photo avec la caméra de l'ordinateur.
Utilité : Utile pour des applications comme la reconnaissance faciale ou la surveillance.
Limites et Dangers :
Limites : Nécessite une caméra fonctionnelle.
Dangers : Risque d'atteinte à la vie privée si mal utilisé.
Code complet :
import cv2
camera = cv2.VideoCapture(0)
if not camera.isOpened():
print("Erreur : Impossible d'accéder à la caméra.")
else:
print("Appuyez sur 'Espace' pour capturer une photo et 'Echap' pour quitter.")
while True:
ret, frame = camera.read()
if ret:
cv2.imshow("Capture d'image", frame)
touche = cv2.waitKey(1)
if touche == 32: # Touche 'Espace'
cv2.imwrite("photo.jpg", frame)
print("Photo capturée et sauvegardée sous 'photo.jpg'.")
elif touche == 27: # Touche 'Echap'
break
else:
print("Erreur lors de la capture vidéo.")
camera.release()
cv2.destroyAllWindows()
4. Convertir une Image en Noir et Blanc
Objectif : Transformer une image en noir et blanc.
Utilité : Simplifie l'analyse des images pour des traitements ultérieurs.
Code complet :
import cv2
# Charger l'image
image = cv2.imread("photo.jpg")
image_nb = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# Sauvegarder l'image
cv2.imwrite("photo_noir_blanc.jpg", image_nb)
print("Image convertie et sauvegardée sous 'photo_noir_blanc.jpg'.")
5. Extraire des Images d'une Vidéo
Objectif : Extraire des images d'une vidéo à intervalles réguliers.
Utilité : Utile pour la création d'aperçus ou la surveillance vidéo.
Limites et Dangers :
Limites : Les images sont extraites à intervalles fixes, ce qui peut ne pas être optimal pour une analyse plus fine.
Dangers : Les vidéos peuvent contenir des informations sensibles.
Code complet :
import cv2
# Charger la vidéo
video = cv2.VideoCapture("video.mp4")
# Vérifier que la vidéo a bien été chargée
if not video.isOpened():
print("Erreur : Impossible d'ouvrir la vidéo.")
else:
frame_rate = video.get(cv2.CAP_PROP_FPS)
print(f"Fréquence d'images : {frame_rate} images par seconde")
count = 0
while True:
ret, frame = video.read()
if not ret:
break
# Enregistrer une image toutes les 30 images
if count % int(frame_rate) == 0:
cv2.imwrite(f"frame_{count}.jpg", frame)
print(f"Image extraite : frame_{count}.jpg")
count += 1
video.release()
6. Scraping des Musiques d'un Site Web
Objectif : Extraire la liste des musiques d'un site web en fonction de leur catégorie.
Utilité : Permet de collecter des informations musicales à partir de sources en ligne.
Limites et Dangers :
Limites : Peut être limité par les politiques de robot.txt du site.
Dangers : Si mal utilisé, cela peut enfreindre des droits d'auteur ou des conditions d'utilisation du site.
Code complet :
import requests
from bs4 import BeautifulSoup
url = 'https://example.com/musique'
response = requests.get(url)
# Parser le contenu HTML
soup = BeautifulSoup(response.text, 'html.parser')
# Trouver toutes les catégories de musique
categories = soup.find_all('div', class_='categorie')
# Afficher les catégories
for categorie in categories:
print(categorie.text)
7. Création d'un Calendrier
Objectif : Créer un calendrier en fonction d'une date entrée par l'utilisateur.
Utilité : Utile pour la gestion du temps et des événements en fonction des dates spécifiées.
Limites et Dangers :
Limites : Ne gère que des calendriers simples.
Dangers : Aucun danger majeur, mais peut manquer de flexibilité.
Code complet :
import calendar
# Demander une année et un mois
annee = int(input("Entrez l'année: "))
mois = int(input("Entrez le mois: "))
# Afficher le calendrier
print(calendar.month(annee, mois))
8. Obtenir la Météo à partir d'une API
Objectif : Se connecter à une API pour obtenir les informations météorologiques.
Utilité : Permet d'afficher la météo en temps réel en fonction de la localisation ou d'une ville.
Limites et Dangers :
Limites : Nécessite une clé API valide.
Dangers : Exposer la clé API peut entraîner un usage malveillant.
Code complet :
import requests
# Utiliser l'API OpenWeatherMap
api_key = "votre_clé_api"
ville = "Paris"
url = f"http://api.openweathermap.org/data/2.5/weather?q={ville}&appid={api_key}"
response = requests.get(url)
data = response.json()
print(f"Météo à {ville}: {data['weather'][0]['description']}")
9. Obtenir les Informations de l'Utilisateur sur l'Ordinateur
Objectif : Obtenir les informations système telles que l'heure, le niveau de batterie, etc.
Utilité : Utile pour surveiller l'état du système ou pour des diagnostics.
Limites et Dangers :
Limites : Fonctionne uniquement sur certains systèmes d'exploitation.
Dangers : Aucun danger majeur, mais certaines informations sensibles peuvent être récupérées.
Code complet :
import psutil
import datetime
# Obtenir l'heure actuelle
heure_actuelle = datetime.datetime.now()
# Informations sur la batterie
batterie = psutil.sensors_battery()
pourcentage = batterie.percent
branchee = batterie.power_plugged
# Informations sur la CPU
cpu_percent = psutil.cpu_percent(interval=1)
# Informations sur la mémoire
memoire = psutil.virtual_memory()
memoire_totale = round(memoire.total / (1024 ** 3), 2)
memoire_utilisée = round(memoire.used / (1024 ** 3), 2)
# Affichage des informations
print(f"Heure actuelle : {heure_actuelle}")
print(f"Pourcentage de batterie : {pourcentage}%")
print(f"Branchée : {'Oui' if branchee else 'Non'}")
print(f"Utilisation CPU : {cpu_percent}%")
print(f"Mémoire totale : {memoire_totale} Go")
print(f"Mémoire utilisée : {memoire_utilisée} Go")
10. Détection de Mouvements dans une Vidéo
Objectif : Détecter les mouvements dans une vidéo et signaler les changements.
Utilité : Utile pour des applications de surveillance ou pour l'analyse vidéo en temps réel.
Limites et Dangers :
Limites : Détection limitée aux zones du cadre où il y a un mouvement visible.
Dangers : Risques de fausses détections ou de non-détection dans certains cas.
Code complet :
import cv2
# Charger la vidéo
video = cv2.VideoCapture("video.mp4")
# Lire le premier frame
ret, frame_precedente = video.read()
while video.isOpened():
ret, frame_actuelle = video.read()
if not ret:
break
# Conversion en gris pour simplifier le traitement
gris_precedent = cv2.cvtColor(frame_precedente, cv2.COLOR_BGR2GRAY)
gris_actuel = cv2.cvtColor(frame_actuelle, cv2.COLOR_BGR2GRAY)
# Calculer la différence
difference = cv2.absdiff(gris_precedent, gris_actuel)
# Afficher la vidéo avec la détection de mouvement
cv2.imshow("Mouvement détecté", difference)
# Mettre à jour le frame précédent
frame_precedente = frame_actuelle.copy()
if cv2.waitKey(1) == 27: # Touche 'Echap'
break
video.release()
cv2.destroyAllWindows()
11. Redémarrage de l'Ordinateur Lors de l'Insertion d'une Clé USB
Objectif : Surveiller l'insertion d'une clé USB et redémarrer l'ordinateur automatiquement dès qu'elle est détectée.
Utilité : Ce script peut être utile dans des situations où un redémarrage automatique est nécessaire après l'insertion d'un périphérique USB, par exemple, pour des installations automatiques ou des configurations de sécurité.
Limites et Dangers :
Limites : Nécessite des privilèges administratifs pour redémarrer l'ordinateur.
Dangers : Peut entraîner des interruptions involontaires du système si mal utilisé, ou des redémarrages non contrôlés.
Code complet :
import os
import time
import psutil
def detecter_usb():
"""
Vérifie les périphériques USB connectés.
Retourne une liste des périphériques USB détectés.
"""
usb_detectes = [p.device for p in psutil.disk_partitions() if 'removable' in p.opts.lower()]
return usb_detectes
def redemarrer_systeme():
"""
Redémarre le système immédiatement sous Windows.
"""
os.system("shutdown /r /t 0") # Commande pour redémarrer immédiatement sous Windows
# Boucle principale
while True:
try:
# Vérifier la présence d'une clé USB
usb = detecter_usb()
if usb:
print(f"Clé USB détectée : {usb}. Redémarrage en cours...")
redemarrer_systeme()
break
else:
print("Aucune clé USB détectée.")
# Vérification toutes les 5 secondes
time.sleep(5)
except Exception as e:
print(f"Une erreur s'est produite : {e}")
break
12. Manipulation d'un Fichier Texte (Ajout, Suppression, Modification)
Objectif : Effectuer des opérations sur un fichier texte, comme ajouter des lignes, supprimer des lignes, et modifier des contenus spécifiques.
Utilité : Utile pour la gestion de logs, la modification de fichiers de configuration ou d'autres types de données textuelles.
Limites et Dangers :
Limites : Nécessite d'être prudent lors de la suppression de lignes, afin d'éviter des pertes de données.
Dangers : Risque d'écrasement du fichier si la sauvegarde n'est pas bien gérée.
Code complet :
# Fonction pour ajouter une ligne au fichier
def ajouter_ligne(fichier, ligne):
with open(fichier, 'a') as f:
f.write(ligne + "\n")
# Fonction pour supprimer une ligne spécifique dans le fichier
def supprimer_ligne(fichier, ligne_a_supprimer):
with open(fichier, 'r') as f:
lignes = f.readlines()
with open(fichier, 'w') as f:
for ligne in lignes:
if ligne.strip("\n") != ligne_a_supprimer:
f.write(ligne)
# Fonction pour modifier une ligne spécifique dans le fichier
def modifier_ligne(fichier, ancienne_ligne, nouvelle_ligne):
with open(fichier, 'r') as f:
lignes = f.readlines()
with open(fichier, 'w') as f:
for ligne in lignes:
if ligne.strip("\n") == ancienne_ligne:
f.write(nouvelle_ligne + "\n")
else:
f.write(ligne)
# Exemple d'utilisation
fichier = "exemple.txt"
# Ajouter une ligne
ajouter_ligne(fichier, "C'est une nouvelle ligne.")