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!