jhjv / c.py
kuro223's picture
666
994d93e
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()