Utiliser os.walk() pour la traversée récursive de répertoires en Python
Naviguer dans les répertoires de manière récursive et répertorier leur contenu est une tâche courante dans la programmation Python . La fonction os.walk() fournit un moyen efficace d'atteindre cet objectif.
Code original
Le code suivant montre comment utiliser os.walk() pour naviguer du répertoire racine vers tous les sous-répertoires et affiche leur contenu :
#!/usr/bin/python import os import fnmatch for root, dir, files in os.walk("."): print(root) print("") for items in fnmatch.filter(files, "*"): print("..." + items) print("")
Ce code répertorie effectivement le contenu du répertoire courant et de ses sous-répertoires, mais il ne fait pas la différence entre répertoires et fichiers.
Sortie souhaitée
Cependant, la sortie souhaitée nécessite l'affichage des répertoires en tant que sous-dossiers et des fichiers en tant qu'éléments dans ces dossiers :
A ---a.txt ---b.txt ---B ------c.out
Code révisé
Pour obtenir le résultat souhaité, le code révisé suivant utilise os.path.basename() pour obtenir le chemin du répertoire :
#!/usr/bin/python import os # traverse root directory, and list directories as dirs and files as files for root, dirs, files in os.walk("."): path = root.split(os.sep) print((len(path) - 1) * '---', os.path.basename(root)) for file in files: print(len(path) * '---', file)
Ce code divise d'abord le chemin en utilisant os.sep pour identifier les niveaux de répertoire. Il imprime ensuite le nom du répertoire avec un nombre de tirets correspondant à sa profondeur, suivi d'une liste de fichiers dans ce répertoire avec un tiret supplémentaire pour chaque niveau.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!