File size: 2,400 Bytes
994d93e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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()