


Wie kann ich die Ausgabe der Funktion os.walk() von Python anpassen, um eine verschachtelte Verzeichnisliste zu erstellen?
Nov 08, 2024 pm 03:57 PMOS.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:
- Er teilt die Wurzel Pfad in einen Listenpfad unter Verwendung des Verzeichnistrennzeichens des Betriebssystems (z. B. „/“ unter UNIX).
- Es gibt den Basisnamen des aktuellen Verzeichnisses mit der entsprechenden Anzahl führender Bindestriche aus, die seine Verschachtelungsebene darstellen.
- Es durchläuft die Dateien im aktuellen Verzeichnis und druckt jede Datei mit ihrer Verschachtelungsebene.
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!

Heißer Artikel

Hot-Tools-Tags

Heißer Artikel

Heiße Artikel -Tags

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Wie benutze ich eine schöne Suppe, um HTML zu analysieren?

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden

Wie man mit PDF -Dokumenten mit Python arbeitet

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch?

Serialisierung und Deserialisierung von Python -Objekten: Teil 1

So implementieren Sie Ihre eigene Datenstruktur in Python
