Comment nettoyer automatiquement Google Drive avec Python et Google Colab

Lecture : 11 minutes
Comment trier des fichiers dans Google Drive
Comment trier des fichiers dans Google Drive

Est-ce que votre Google Drive ressemble à un tiroir de bureau après un déménagement ? Des PDF qui côtoient des photos de vacances et des tableurs égarés… Trier tout cela à la main est une corvée que l’on repousse sans cesse. Et je suis sûr qu’à chaque fois, vous vous dites « Une autre fois ….. !« 

Si vous employez un Chromebook, vous utilisez un tant soit peu l’informatique. Et grâce à cet outil nous allons lui demander d’effectuer cette tâche qui vous rebute. Nous n’allons pas simplement ranger, nous allons missionner un robot pour qu’il transporte et classe vos fichiers. Grâce à Google Colab et un soupçon de Python, votre Drive va se structurer tout seul, créant ses propres dossiers et classant chaque fichier au bon endroit.

💡 Rappel important : Ce travail ne s’effectue pas sur votre ordinateur (Chromebook ou autre), mais directement sur les serveurs sécurisés de Google.

A retenir :

Cet article présente un algorithme de gestion de système de fichiers utilisant les bibliothèques os et shutil pour automatiser le cycle « Analyse-Classification-Déplacement ». Il intègre une gestion récursive des répertoires via os.makedirs et une routine de résolution de conflits de nommage pour prévenir l’écrasement de données lors du transfert vers des dossiers cibles catégorisés.

 Fiche technique : Le système de tri autonome

CaractéristiqueDétails
MissionAnalyser, transporter et classer vos fichiers
Outils utilisésGoogle Drive & Google Colab (Gratuits)
Point A (Source)Votre dossier de désordre (A_TRIER)
Point B (Cible)Votre dossier propre (ARCHIVES_FINALES)
IntelligenceCréation automatique des sous-dossiers par type

La magie du « déménagement intelligent »

  • Le point A (La source) : Votre bac à sable.
  • L’analyse : Le robot identifie le type de fichier (ex: .pdf).
  • La création du point B : Le robot crée les sous-dossiers automatiquement.
  • La sécurité anti-doublon : Votre script intègre une logique avancée qui, avant d’utiliser shutil.move, vérifie si un fichier du même nom existe déjà au Point B, le renommant intelligemment (ex: Rapport (1).pdf) pour tout conserver.

Le script « Déménageur » (Version haute sécurité)

Rendez-vous sur colab.research.google.com et utilisez ce script. Il inclut la gestion des erreurs et des doublons.

import os
import shutil
from google.colab import drive

# 1. Montage du Drive
if not os.path.exists('/content/drive'):
    drive.mount('/content/drive')

# 2. CONFIGURATION DES POINTS DE PASSAGE
point_a_source = '/content/drive/MyDrive/A_TRIER'
point_b_dest   = '/content/drive/MyDrive/ARCHIVES_FINALES'

# 3. Le dictionnaire d'intelligence
categories = {
    '01_DOCUMENTS_PDF': ['.pdf'],
    '02_PHOTOS_IMAGES': ['.jpg', '.jpeg', '.png', '.gif'],
    '03_DOCS_BUREAUTIQUE': ['.docx', '.txt', '.doc', '.odt'],
    '04_TABLEURS_DATA': ['.xlsx', '.csv', '.xls'],
    '05_ARCHIVES_ZIP': ['.zip', '.rar']
}

print(f"🤖 Robot : Transfert sécurisé de {point_a_source} vers {point_b_dest}...")

if not os.path.exists(point_b_dest):
    os.makedirs(point_b_dest)

if not os.path.exists(point_a_source):
    print(f"⚠️ Erreur : Dossier source '{point_a_source}' introuvable.")
else:
    fichiers = [f for f in os.listdir(point_a_source) if os.path.isfile(os.path.join(point_a_source, f))]
    
    for nom_fichier in fichiers:
        base, ext = os.path.splitext(nom_fichier)
        extension = ext.lower()
        range_pour_ce_fichier = False
        
        for nom_sous_dossier, ext_autorisees in categories.items():
            if extension in ext_autorisees:
                chemin_final = os.path.join(point_b_dest, nom_sous_dossier)
                if not os.path.exists(chemin_final):
                    os.makedirs(chemin_final)
                
                # --- LOGIQUE ANTI-DOUBLON ---
                cible_path = os.path.join(chemin_final, nom_fichier)
                nouveau_nom = nom_fichier
                i = 1
                while os.path.exists(os.path.join(chemin_final, nouveau_nom)):
                    nouveau_nom = f"{base} ({i}){ext}"
                    i += 1
                
                # --- TRANSFERT SÉCURISÉ ---
                try:
                    shutil.move(os.path.join(point_a_source, nom_fichier), 
                                os.path.join(chemin_final, nouveau_nom))
                    message = f"✅ {nom_fichier} -> {nom_sous_dossier}"
                    if nouveau_nom != nom_fichier:
                        message += f" (renommé en {nouveau_nom})"
                    print(message)
                except Exception as e:
                    print(f"❌ ERREUR sur {nom_fichier} : {e}")
                
                range_pour_ce_fichier = True
                break
        
        if not range_pour_ce_fichier:
            print(f"ℹ️ IGNORÉ : {nom_fichier} (Pas de catégorie prévue)")

print("\n✨ Mission terminée. Votre Drive est un modèle d'ordre !")

Une exemple d’exécution

Pour bien comprendre le processus qui va s’effectuer sur vos fichiers voici un exemple de scénario :

Avant l’exécution du script (dans MyDrive) :

Comment nettoyer automatiquement Google Drive avec Python et Google Colab

Pendant l’exécution, vous verrez des messages comme :

Comment nettoyer automatiquement Google Drive avec Python et Google Colab

Après l’exécution du script (dans MyDrive) :

Comment nettoyer automatiquement Google Drive avec Python et Google Colab

Archive brute (Section : robustesse logicielle)

Résolution des conflits de noms : L’implémentation d’une boucle while os.path.exists garantit l’unicité du nom de fichier dans la destination avant même que le transfert ne commence. Cela transforme un simple script de tri en un véritable outil de sauvegarde incrémentale.

Gestion des exceptions : L’ajout du bloc try-except autour de shutil.move assure la continuité du service. Si un fichier est verrouillé ou corrompu, le script passe au suivant au lieu de s’arrêter brutalement, ce qui est crucial pour les volumes de données importants.

Comprendre quelques fonctions

L’architecte

Dans le langage Python, os.makedirs est l’outil qui permet de créer des dossiers (répertoires) sur votre disque dur ou votre Google Drive. C’est cet outil que nous utilisons dans le code. Il a une fonction bien particulière, et pour que vous compreniez bien sa fonction, voici comment il fonctionne. Imaginez que vous demandez à un ouvrier de poser un carton dans la « Chambre 202 » d’un hôtel.

Un contenu de qualité, sans publicité.

Vous aimez notre travail ? Soutenez notre indépendance en devenant membre sur Patreon.

Soutenir MyChromebook.fr
  • Si vous utilisez une commande de copie classique et que la chambre n’existe pas, l’ouvrier s’arrête et dit : « Je ne trouve pas l’endroit« .
  • Si vous utilisez os.makedirs, l’ouvrier regarde si la chambre existe. Si elle n’est pas là, il sort ses outils, construit la chambre, installe la porte, et seulement après, il pose le carton.

Pourquoi c’est « Magique » dans notre script ?

Dans notre article, nous l’utilisons pour transformer le Point B en un espace intelligent :

  1. Récursion : Le « s » à la fin de makedirs signifie qu’il peut créer toute une file de dossiers d’un coup. Si vous voulez créer Archives/2024/PDF, il créera les trois dossiers en une seule commande.
  2. Sécurité : Nous l’utilisons souvent avec une option de sécurité. Le robot vérifie d’abord : « Est-ce que ce dossier existe déjà ? ». Si oui, il ne fait rien (il ne va pas casser ce qui est déjà construit).
  3. Autonomie : C’est ce qui permet à l’utilisateur de ne rien préparer. Le script découvre un fichier .jpg, il décide qu’il faut un dossier PHOTOS, et os.makedirs le sort de terre instantanément.

Fiche technique : os.makedirs

ComposantRôle
osLe module « Operating System » (il parle au système de fichiers).
makedirsLa fonction « Make Directories » (créer des répertoires).
Le chemin (Path)L’adresse exacte où le dossier doit être construit.
L’automatismeÉvite les erreurs « Folder Not Found » (Dossier non trouvé).

Le déménageur

Si os.makedirs est l’architecte qui construit les placards, shutil.move est le déménageur qui porte vos cartons d’un point à un autre.

Dans le langage Python, shutil (abréviation de Shell Utilities) est une bibliothèque spécialisée dans la manipulation de fichiers à grande échelle. La fonction .move() est son outil le plus efficace pour déplacer des objets.

Pourquoi utiliser « Move » plutôt que « Copy » ?

C’est une question de stratégie et de propreté pour votre Google Drive :

  1. Le gain de place : Contrairement à une copie, shutil.move ne crée pas de doublon. Il prend le fichier au Point A et le dépose au Point B. Votre espace de stockage reste donc identique.
  2. La preuve du travail : À la fin du script, votre dossier A_TRIER est vide (ou presque). C’est une satisfaction visuelle : vous savez que tout ce qui pouvait être rangé l’a été.
  3. La rapidité : Sur un système de fichiers, « déplacer » un fichier revient souvent à simplement changer son « adresse » dans l’index du disque. C’est beaucoup plus rapide que de réécrire toutes les données ailleurs.

Comment cela fonctionne concrètement ?

Le robot exécute trois étapes en une fraction de seconde :

  1. Saisie : Il attrape le fichier au Point A (/A_TRIER/photo.jpg).
  2. Transport : Il l’emmène vers le Point B (/ARCHIVES_FINALES/02_PHOTOS/).
  3. Vérification : Une fois le fichier bien arrivé au Point B, il efface la trace au Point A.

Fiche Technique : shutil.move

ÉlémentRôle
shutilLe « Contremaître » (expert en logistique de fichiers).
.moveL’action de déplacement (Transférer + Supprimer l’original).
SécuritéSans précaution, il écrase silencieusement un fichier existant du même nom — c’est pourquoi notre script intègre une vérification anti-doublon avant chaque transfert.

Personnalisez votre robot : Le code est à VOUS !

Le robot que vous venez de lancer est déjà très malin, mais il est fait pour être personnalisé ! Voici comment le faire évoluer selon votre façon de travailler :

  • Ajoutez une catégorie : Vous utilisez beaucoup de fichiers .md pour vos notes ou des .mp3 pour votre musique ? Ajoutez simplement une ligne dans la section categories du script pour qu’il crée automatiquement un dossier "06_NOTES_MARKDOWN" ou "07_AUDIO_MUSIQUE".
  • Modifiez les noms : Vous préférez « Mes Images » à « 02_PHOTOS_IMAGES » ? Changez simplement le texte entre guillemets dans le dictionnaire. Le robot s’adaptera sans discuter.
  • Soyez créatif ! Ce script est une base. Une fois que vous avez compris comment il déplace un fichier du Point A au Point B, les possibilités sont infinies.

C’est aussi ça, l’informatique au service de l’humain.

Vous pouvez retrouver l’ensemble de nos articles sur l’intégration de script Python en cliquant ici.

FAQ (Foire Aux Questions)

Est-ce que le script supprime mes fichiers ?

Non. Le script utilise shutil.move, ce qui déplace le fichier de la source vers la destination. De plus, une sécurité est intégrée : si un fichier porte le même nom à l’arrivée, le script le renomme (ex: document (1).pdf) au lieu de l’écraser.

Puis-je classer d’autres types de fichiers (ex: Vidéos ou Musique) ?

Absolument. Il suffit d’ajouter une ligne dans la section categories du code, par exemple : ’06_VIDEOS’: [‘.mp4’, ‘.mov’, ‘.avi’]. Le robot créera le dossier et triera ces fichiers dès la prochaine exécution.

Le script fonctionne-t-il sur les dossiers partagés ?

Oui, à condition que vous ayez les droits de modification sur le dossier source et le dossier de destination. Le script traite les fichiers se trouvant directement à la racine du dossier « A_TRIER ».

NOUVEL ÉPISODE

CKB SHOW : Le Podcast

Rejoignez-nous chaque semaine pour décortiquer l'actualité Google, les dernières sorties Chromebook et les innovations en matière d'IA.

Miniature du podcast CKB SHOW
Avatar de l'auteur

À propos de Mister Robot

Entre un point X et un point Y, je me balade pas mal par l'entremise des bits composant ma mémoire. Un seul regret : ne pas avoir rencontré Mr Alan Mathison Turing et ainsi pouvoir collaborer pour l'article intitulé « Computing Machinery and Intelligence ».

Laisser un commentaire

À lire aussi