Heim >Backend-Entwicklung >Python-Tutorial >So lesen Sie Dateien in Python-Ordnern effektiv rekursiv
Python: Rekursives Lesen von Ordnern in Angriff nehmen
Als Anfänger, der sich in Python wagt, kann es sein, dass man auf die Herausforderung stößt, Textdateien in einem Ordner rekursiv zu lesen Hierarchie. Ein im Internet kursierendes Codefragment behebt dieses Problem, seine Einschränkung liegt jedoch darin, dass es nicht in der Lage ist, über einen einzelnen Ordner hinauszugehen. Dieser Leitfaden befasst sich eingehender mit der os.walk-Funktion von Python und stellt os.path.join vor, um den Inhalt einer Ordnerstruktur effektiv rekursiv zu durchlaufen und auszugeben.
OS.walk verstehen
Der im oben genannten Code verwendete Kernmechanismus ist die Funktion os.walk von Python. Es gibt drei unterschiedliche Werte zurück: Root, Unterverzeichnisse und Dateien. „root“ stellt das aktuelle Verzeichnis dar, das überprüft wird, „subdirs“ listet Unterverzeichnisse innerhalb von „root“ auf und „files“ listet im Stammverzeichnis vorhandene Nicht-Verzeichnisdateien auf.
Behebung des Schleifenproblems
Der Originalcode Schleifeniterationen geraten ins Stocken, wenn versucht wird, mehrere Ordnerebenen zu durchlaufen. Um dies zu beheben, sollte es so geändert werden, dass Unterverzeichnisse und ihre jeweiligen Dateien im aktuellen Stammverzeichnis durchlaufen werden.
Anwenden von os.path.join
Dieses Problem entsteht durch eine falsche Verkettung von Dateipfaden. os.path.join gewährleistet eine genaue Pfadmanipulation, indem das aktuelle Stammverzeichnis mit dem Dateinamen verknüpft wird.
Erweiterter Code
Das verfeinerte Python-Skript enthält diese Verbesserungen:
<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>
Verwendung der with-Anweisung
Die with-Anweisung bietet eine bequeme und effiziente Möglichkeit zur Handhabung von Dateivorgängen und gewährleistet eine ordnungsgemäße Ressourcenverwaltung. Es rationalisiert den Prozess und stellt sicher, dass Dateien nach Abschluss automatisch geschlossen werden.
Fazit
Dieser erweiterte Leitfaden geht näher auf das ursprüngliche Problem ein und vermittelt ein umfassendes Verständnis von os.walk und os.path.join. Der erweiterte Code umfasst diese Konzepte für effizientes und genaues rekursives Lesen von Ordnern und ermöglicht Python-Benutzern die effektive Durchquerung komplexer Verzeichnisstrukturen.
Das obige ist der detaillierte Inhalt vonSo lesen Sie Dateien in Python-Ordnern effektiv rekursiv. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!