Exercices Projets guidés Outil : chercher dans les fichiers
🎉

Bravo!

Intermédiaire 🧠 Fondamentaux 20 XP 0 personnes ont réussi

Outil : chercher dans les fichiers

Quand tu demandes a Claude Code "trouve ou on utilise la variable API_KEY dans le projet", il fait un grep. Il parcourt tous les fichiers, cherche le texte, et te montre les lignes correspondantes avec leur contexte.

C'est un outil indispensable. Sans lui, le LLM devrait lire chaque fichier un par un pour trouver une information. Avec une recherche, il localise instantanement ce qu'il cherche.

En vrai Python, tu peux faire un grep maison :

from pathlib import Path

for fichier in Path("src/").rglob("*.py"):
for i, ligne in enumerate(fichier.read_text().splitlines(), 1):
if "API_KEY" in ligne:
print(f"{fichier}:{i}: {ligne.strip()}")

On travaille toujours avec le systeme de fichiers simule. Ecris une fonction chercher_dans_fichiers(terme, systeme_fichiers, dossier=".", extension=None) qui cherche un terme dans tous les fichiers du systeme simule.

La fonction doit :

Parcourir recursivement tous les fichiers du dossier indique.
Chercher le terme dans chaque ligne de chaque fichier (recherche insensible a la casse).
Retourner les resultats avec le chemin complet, le numero de ligne, et la ligne correspondante.

Format de retour :

{"succes": True, "terme": "API_KEY", "resultats": [
{"fichier": "src/config.py", "ligne": 3, "contenu": "API_KEY = 'xxx'"},
{"fichier": "src/app.py", "ligne": 15, "contenu": "headers = {'key': API_KEY}"}
], "total": 2}

Si aucun resultat : {"succes": True, "terme": "xyz", "resultats": [], "total": 0}

Le parametre extension permet de filtrer : extension=".py" ne cherche que dans les fichiers Python.

Exemple :

fs = {
"src": {
"app.py": "from config import API_KEY\nprint(API_KEY)",
"config.py": "API_KEY = 'secret123'"
},
"readme.md": "Documentation du projet"
}

chercher_dans_fichiers("api_key", fs)
renvoie 3 resultats (la recherche est insensible a la casse)

chercher_dans_fichiers("api_key", fs, extension=".md")
renvoie 0 resultats (aucun fichier .md ne contient api_key)

Tests (4/5)

Trouver un terme dans les fichiers
fs = {
    "app.py": "from config import API_KEY\nprint(API_KEY)",
    "config.py": "API_KEY = 'secret123'"
}
r = chercher_dans_fichiers("API_KEY", fs)
assert r["succes"] == True
assert r["total"] == 3, f"Attendu 3 resultats (2 dans app.py + 1 dans config.py), obtenu {r['total']}"
Recherche insensible a la casse
fs = {"test.py": "Ma Variable = 42"}
r = chercher_dans_fichiers("ma variable", fs)
assert r["total"] == 1, "La recherche doit etre insensible a la casse"
Filtrer par extension
fs = {
    "app.py": "API_KEY = 'x'",
    "readme.md": "La cle API_KEY est dans le fichier config"
}
r = chercher_dans_fichiers("API_KEY", fs, extension=".py")
assert r["total"] == 1, f"Avec extension='.py', seul app.py doit matcher, obtenu {r['total']}"
assert r["resultats"][0]["fichier"] == "app.py"
Aucun resultat
fs = {"app.py": "print('hello')"}
r = chercher_dans_fichiers("inexistant_xyz", fs)
assert r["succes"] == True
assert r["total"] == 0
assert r["resultats"] == []

+ 0 tests cachés

Indices (3 disponibles)

solution.py