Maison >développement back-end >Tutoriel Python >Comment lire de manière récursive le contenu d'un dossier en Python à l'aide de la fonction os.walk() ?

Comment lire de manière récursive le contenu d'un dossier en Python à l'aide de la fonction os.walk() ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-18 14:42:301078parcourir

How to Recursively Read Folder Contents in Python Using the os.walk() Function?

Lecture récursive du contenu d'un dossier en Python

En Python, vous pouvez rencontrer des problèmes lorsque vous tentez de parcourir de manière récursive des répertoires pour lire des fichiers texte. Un problème courant est le code qui ne fonctionne que pour un seul niveau de répertoire.

Comprendre la fonction os.walk

Le cœur de la traversée récursive de dossiers en Python réside dans le système d'exploitation Fonction .walk(). Il parcourt un répertoire spécifié et ses sous-répertoires, renvoyant trois valeurs : racine, sous-répertoires et fichiers.

  • root : le répertoire actuel en cours de traitement.
  • sous-répertoires : répertoires dans le répertoire actuel directory.
  • files : fichiers (pas de répertoires) dans le répertoire actuel.

Optimisation de la traversée des dossiers

Pour parcourir les répertoires de manière récursive, vous doit parcourir la liste des sous-répertoires renvoyés par os.walk(). Pour chaque sous-répertoire, vous pouvez ensuite appeler os.walk() de manière récursive pour traiter son contenu.

Code Python amélioré

L'exemple de code peut être modifié pour gérer plusieurs répertoires niveaux :

<code class="python">import os
import sys

walk_dir = sys.argv[1]

for root, subdirs, files in os.walk(walk_dir):
    for subdir in subdirs:
        # Process subdirectory: call os.walk() recursively for subdir
        for sub_subdir, sub_subfiles, _ in os.walk(os.path.join(root, subdir)):
            # Process subdirectories and files in subdirectory</code>

Bonnes pratiques supplémentaires

  • Utilisez os.path.join() pour la concaténation de chemins au lieu de la manipulation manuelle de chaînes.
  • Envisagez de convertir les arguments de script en chemins absolus à l'aide de os.path.abspath() pour plus de stabilité.
  • Utilisez l'instruction with pour simplifier la gestion des fichiers et assurer un nettoyage automatique.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn