04/09

Projet 04 · sur 09

Outil de reporting de fichiers

SAÉ 1.05 · BUT1 · Programmation · binôme Terminé
PythonPowerShellPyQtpathlibJSONTri / lambdaInterface graphiqueGestion d'erreurs
Le projet

Réalisée en binôme avec Léandro Berge, cette SAÉ « Traiter des données » consistait à développer une application Python dotée d'une interface graphique pour détecter, visualiser et gérer les 100 fichiers les plus volumineux d'un répertoire. L'outil vise un usage d'administration système : localiser et supprimer rapidement de gros fichiers et analyser une arborescence pour gagner du temps.

L'outil s'articule autour d'un pipeline mêlant PowerShell et Python. Un script PowerShell lance le programme ; un premier script Python gère la sélection du répertoire ; un deuxième analyse les fichiers, trie la liste par taille décroissante et produit un fichier JSON (gros_fichiers.json) ; un troisième affiche un graphe interactif (camembert, légendes, onglets, boutons) à partir du JSON et génère un script PowerShell de suppression des fichiers sélectionnés, qui est ensuite exécuté.

Le code est organisé en modules dédiés (main.py, script1.py, script2.py, script3.py, plus des modules de création des boutons, du camembert, des légendes et des onglets). Il utilise notamment PyQt (QColor) pour l'interface et la génération aléatoire de couleurs, ainsi que pathlib (rglob, resolve, stat().st_size) pour le parcours et la mesure de la taille des fichiers.

Plusieurs difficultés techniques ont été rencontrées et résolues : la syntaxe de la fonction lambda utilisée pour trier par taille, la gestion d'erreurs (répertoire non sélectionné, JSON vide, aucun fichier à supprimer), un premier tri incorrect basé sur split() simplifié à l'aide de deux variables. En conclusion, le programme remplit bien les fonctions attendues : analyser, trier dans l'ordre décroissant et générer un script de suppression.

Objectif

Développer une application Python en binôme, avec interface graphique, capable de détecter, visualiser et gérer (supprimer) les 100 fichiers les plus volumineux d'un répertoire — un outil utile aux administrateurs système.

La chaîne de traitement
  • Lancement de l'outil via un script PowerShell.
  • Sélection du répertoire à analyser (script1.py).
  • Analyse : parcours de l'arborescence avec pathlib (rglob), mesure de la taille (stat().st_size), tri par taille décroissante et création du JSON (script2.py).
  • Affichage d'un graphe interactif (camembert, légendes, onglets, boutons) à partir du JSON (script3.py).
  • Génération d'un script PowerShell de suppression des fichiers sélectionnés.
  • Exécution du script de suppression.
Difficultés surmontées & apprentissages
  • Maîtriser la syntaxe de la fonction lambda pour trier la liste par taille (sort(key=lambda x: x[1], reverse=True)).
  • Mettre en place la gestion d'erreurs : aucun répertoire sélectionné, fichier JSON vide ou inexistant, aucun fichier choisi pour la suppression.
  • Corriger un mauvais tri par taille initialement basé sur split(), simplifié ensuite à l'aide de deux variables.
Apprentissages critiques (référentiel)
  • AC13.01 — Utiliser un système informatique et ses outils.
  • AC13.02 — Lire, exécuter, corriger et modifier un programme.
  • AC13.03 — Traduire un algorithme dans un langage et pour un environnement donné.
  • AC13.05 — Choisir les mécanismes de gestion de données adaptés et argumenter ses choix.
  • AC13.06 — S'intégrer dans un environnement propice au développement et au travail collaboratif.
Réflexivité
Difficultés surmontées

La syntaxe des fonctions lambda et la gestion d'erreurs en Python (répertoire non sélectionné, JSON vide, aucun fichier à supprimer) ont demandé plusieurs essais avant d'être maîtrisées.

Idées mises en œuvre

Découper l'outil en scripts spécialisés (sélection du répertoire, analyse/JSON, affichage du graphe, génération du script de suppression) pour le rendre lisible et maintenable.

Règles & interlocuteurs respectés

Travail en binôme avec un partage clair des tâches, et code commenté pour rester compréhensible à deux.

Livrables
  • Outil Python complet (téléchargeable ci-dessous).
  • Présentation du projet (9 diapositives).
  • Fichier JSON généré et script PowerShell de suppression produit automatiquement.