import os import sys def remplacer_recursif(): # Dossier où se trouve le script dossier_racine = os.getcwd() nom_du_script = os.path.basename(__file__) print(f"--- Remplacement Récursif (Dossiers et sous-dossiers) ---") print(f"Racine : {dossier_racine}") ancien_mot = input("Entrez le mot à remplacer : ") nouveau_mot = input("Entrez le nouveau mot : ") if not ancien_mot: print("Erreur : Le mot à remplacer est vide.") return compteur_fichiers = 0 dossiers_ignores = {'.git', '.idea', '__pycache__', 'venv', 'node_modules'} # Liste de sécurité # os.walk parcourt l'arborescence # racine : le chemin du dossier actuel dans la boucle # dossiers : la liste des sous-dossiers dans 'racine' # fichiers : la liste des fichiers dans 'racine' for racine, dossiers, fichiers in os.walk(dossier_racine): # Optionnel : On filtre pour ne pas aller dans les dossiers systèmes/cachés # On modifie la liste 'dossiers' en place pour empêcher os.walk d'y descendre dossiers[:] = [d for d in dossiers if d not in dossiers_ignores] for fichier in fichiers: chemin_complet = os.path.join(racine, fichier) # Ne pas modifier le script lui-même if fichier == nom_du_script and racine == dossier_racine: continue try: # 1. Lecture with open(chemin_complet, 'r', encoding='utf-8') as f: contenu = f.read() # 2. Vérification et Remplacement if ancien_mot in contenu: nouveau_contenu = contenu.replace(ancien_mot, nouveau_mot) # 3. Écriture with open(chemin_complet, 'w', encoding='utf-8') as f: f.write(nouveau_contenu) print(f"[MODIFIÉ] {chemin_complet}") compteur_fichiers += 1 except UnicodeDecodeError: # On passe silencieusement les fichiers binaires (images, pdf, exe) pass except Exception as e: print(f"[ERREUR] Sur {chemin_complet} : {e}") print(f"\nTerminé ! {compteur_fichiers} fichier(s) modifiés au total.") if __name__ == "__main__": remplacer_recursif()