Le but de ce programme est de parcourir récursivement tous les fichiers et répertoires d'un répertoire racine pour trouver les correspondances d'une phrase clé (fichier nommé dans la méthode principale). Mon problème principal est que je n'arrive pas à comprendre comment entrer dans les sous-répertoires et m'assurer de parcourir tous les fichiers et répertoires qui s'y trouvent, puis de continuer jusqu'à ce que j'aie parcouru tous les répertoires de l'arborescence répertoire racine.Lecture récursive des dossiers en Python
Voici mon code actuel.
import os
import sys
def search_dir(path):
for root, dirs, files in os.walk(os.path.abspath(path)):
for f in files:
if file in f:
print("File : {}".format(os.path.join(root, f)))
for d in dirs:
if file in d:
print("Dir : {}".format(os.path.join(root, d)))
def main(file, path):
print("Starting search for '{}'\n".format(file))
search_dir(path)
print("\nDone Searching")
if __name__ == "__main__":
if len(sys.argv)!=3:
print("Usage: python find_file.py [path] [file]")
else:
path, file = sys.argv[1], sys.argv[2]
main(file, path)
J'ai essayé de changer les répertoires en utilisant os.chdir (new_path) mais je finissent par avoir des problèmes que je me perds quand changer de répertoire dos, etc. Je me sens comme si il y a un moyen d'utiliser récursive La fonction search_dir, mais après beaucoup de réflexion je ne peux pas l'exécuter correctement.
Je vais probablement me marqué vers le bas, mais je me suis aperçu après avoir posté ce que os.walk va déjà à travers l'arbre entier. Ainsi, la fonction utilisant os.walk n'a pas besoin d'être récursivement utilisée. Peut-être que quelqu'un pourrait alors clarifier ce que fait exactement os.walk, car la lecture de la fonction ne m'a pas permis de le comprendre. –