Maison >développement back-end >Tutoriel Python >Comment lire de manière récursive le contenu d'un dossier au-delà d'un niveau de sous-répertoire en Python ?
Lecture récursive du dossier Python
Cette question se pose lorsque vous travaillez avec un script Python pour lire de manière récursive le contenu des fichiers texte dans une structure de dossiers. Cependant, le code initial fourni rencontrait une limitation de lecture d'un seul dossier en profondeur.
Identification du problème
Le problème réside dans le chemin codé en dur : outfileName = rootdir "/" dossier "/py-outfile.txt". Ce chemin suppose que le fichier cible se trouve un sous-dossier en dessous du répertoire racine.
Solution
Pour résoudre cette limitation, nous devons comprendre les valeurs de retour d'os. walk :
Au lieu d'utiliser filePath = rootdir '/' file, nous devrions utiliser os.path.join pour combiner racine et fichier : filePath = os.path.join(root, file). Cette approche nous permet de naviguer correctement dans la hiérarchie des dossiers.
Code révisé
Voici une version révisée du code :
import os import sys walk_dir = sys.argv[1] print('walk_dir = ' + walk_dir) # Convert to absolute path (recommended if the working directory may change during execution) walk_dir = os.path.abspath(walk_dir) print('walk_dir (absolute) = ' + os.path.abspath(walk_dir)) for root, subdirs, files in os.walk(walk_dir): print('--\nroot = ' + root) list_file_path = os.path.join(root, 'my-directory-list.txt') print('list_file_path = ' + list_file_path) with open(list_file_path, 'wb') as list_file: for subdir in subdirs: print('\t- subdirectory ' + subdir) for filename in files: file_path = os.path.join(root, filename) print('\t- file %s (full path: %s)' % (filename, file_path)) with open(file_path, 'rb') as f: f_content = f.read() list_file.write(('The file %s contains:\n' % filename).encode('utf-8')) list_file.write(f_content) list_file.write(b'\n')
Ceci le code révisé parcourra désormais de manière récursive toute la structure des dossiers et écrira le contenu de chaque fichier dans le list_file_path spécifié.
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!