Maison  >  Article  >  développement back-end  >  Comment lire efficacement des fichiers de manière récursive dans des dossiers Python

Comment lire efficacement des fichiers de manière récursive dans des dossiers Python

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-18 14:38:30454parcourir

How to Effectively Read Files Recursively in Python Folders

Python : s'attaquer à la lecture récursive de dossiers

En tant que débutant s'aventurant dans Python, on peut rencontrer le défi de lire de manière récursive des fichiers texte dans un dossier hiérarchie. Un extrait de code circulant en ligne résout ce problème, mais sa limite réside dans son incapacité à aller au-delà d’un seul dossier. Ce guide approfondit la fonction os.walk de Python et présente os.path.join pour parcourir et afficher efficacement le contenu d'une structure de dossiers de manière récursive.

Comprendre os.walk

Le mécanisme de base utilisé dans le code susmentionné est la fonction os.walk de Python. Il renvoie trois valeurs distinctes : racine, sous-répertoires et fichiers. root représente le répertoire actuel en cours d'inspection, subdirs répertorie les sous-répertoires de la racine et files énumère les fichiers non-répertoire présents dans la racine.

Résoudre le problème de boucle

Le code d'origine les itérations de boucle échouent lorsque vous tentez de parcourir plusieurs niveaux de dossiers. Pour remédier à cela, il doit être modifié pour parcourir les sous-répertoires et leurs fichiers respectifs dans le répertoire racine actuel.

Application de os.path.join

Ce problème provient de une concaténation incorrecte des chemins de fichiers. os.path.join garantit une manipulation précise du chemin en joignant la racine actuelle avec le nom du fichier.

Code amélioré

Le script Python raffiné intègre ces améliorations :

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

walk_dir = sys.argv[1]

for root, subdirs, files in os.walk(walk_dir):
    list_file_path = os.path.join(root, 'my-directory-list.txt')
    with open(list_file_path, 'wb') as list_file:
        for subdir in subdirs:
            list_file.write(('Subdirectory: {}\n'.format(subdir)).encode('utf-8'))
        for filename in files:
            file_path = os.path.join(root, filename)
            list_file.write(('File: {} (full path: {})\n'.format(filename, file_path)).encode('utf-8'))</code>

Utilisation de l'instruction with

L'instruction with offre un moyen pratique et efficace de gérer les opérations sur les fichiers et garantit une bonne gestion des ressources. Il rationalise le processus, garantissant que les fichiers sont automatiquement fermés une fois terminés.

Conclusion

Ce guide étendu développe le problème initial, offrant une compréhension complète d'os.walk et os.path.join. Le code amélioré adopte ces concepts pour une lecture récursive efficace et précise des dossiers, permettant aux utilisateurs de Python de parcourir efficacement des structures de répertoires complexes.

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