OS.walk() zum rekursiven Durchlaufen von Verzeichnissen in Python verwenden: Eine detaillierte Anleitung
Einführung
Die Funktion os.walk() von Python bietet einen leistungsstarken Mechanismus zum rekursiven Durchlaufen von Verzeichnisbäumen. Es durchläuft alle Verzeichnisse und Dateien innerhalb eines bestimmten Verzeichnisses und ist damit ein unverzichtbares Werkzeug für Aufgaben wie Dateiverwaltung und Verzeichnisdurchsuchung.
Problem: Anpassen der Verzeichnislistenausgabe
Um die Fähigkeiten von os.walk() zu demonstrieren, stellen Sie sich das folgende Szenario vor: Sie möchten rekursiv vom Stammverzeichnis aus navigieren und eine benutzerdefinierte Liste von Verzeichnissen und Dateien, einschließlich verschachtelter Ebenen, drucken.
Anfänglich Code und O/P
Mit dem folgenden Code:
import os import fnmatch for root, dir, files in os.walk("."): print(root) print("") for items in fnmatch.filter(files, "*"): print("..." + items) print("")
Sie erhalten die folgende Ausgabe:
. ...Python_Notes ...pypy.py ...pypy.py.save ...classdemo.py ....goutputstream-J9ZUXW ...latest.py ...pack.py ...classdemo.pyc ...Python_Notes~ ...module-demo.py ...filetype.py ./packagedemo ...classdemo.py ...__init__.pyc ...__init__.py ...classdemo.pyc
Diese Ausgabe erfüllt jedoch nicht die Anforderungen das gewünschte Format von:
A ---a.txt ---b.txt ---B ------c.out
Lösung
Um die Ausgabe anzupassen, ist ein verbesserter Ansatz erforderlich. Der folgende Code erreicht das gewünschte Format:
import os # traverse root directory, and list directories as dirs and files as files for root, dirs, files in os.walk("."): path = root.split(os.sep) print((len(path) - 1) * '---', os.path.basename(root)) for file in files: print(len(path) * '---', file)
Erklärung
Dieser Code verwendet die folgende Logik:
Ausgabe
Mit diesem verbesserten Code können Sie erhält die gewünschte Ausgabe:
A ---a.txt ---b.txt ---B ------c.out
In dieser Ausgabe stellen A und B Verzeichnisse dar, während a.txt, b.txt und c.out Dateien darstellen. Die Anzahl der Bindestrich-Präfixe gibt die Verschachtelungsebene jedes Elements an.
Das obige ist der detaillierte Inhalt vonWie kann ich die Ausgabe der Funktion os.walk() von Python anpassen, um eine verschachtelte Verzeichnisliste zu erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!