Heim Backend-Entwicklung Python-Tutorial Wie kann ich die Ausgabe der Funktion os.walk() von Python anpassen, um eine verschachtelte Verzeichnisliste zu erstellen?

Wie kann ich die Ausgabe der Funktion os.walk() von Python anpassen, um eine verschachtelte Verzeichnisliste zu erstellen?

Nov 08, 2024 pm 03:57 PM

How Can I Customize the Output of Python's os.walk() Function to Create a Nested Directory Listing?

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("")
Nach dem Login kopieren

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
Nach dem Login kopieren

Diese Ausgabe erfüllt jedoch nicht die Anforderungen das gewünschte Format von:

A
---a.txt
---b.txt
---B
------c.out
Nach dem Login kopieren
Nach dem Login kopieren

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)
Nach dem Login kopieren

Erklärung

Dieser Code verwendet die folgende Logik:

  1. Er teilt die Wurzel Pfad in einen Listenpfad unter Verwendung des Verzeichnistrennzeichens des Betriebssystems (z. B. „/“ unter UNIX).
  2. Es gibt den Basisnamen des aktuellen Verzeichnisses mit der entsprechenden Anzahl führender Bindestriche aus, die seine Verschachtelungsebene darstellen.
  3. 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
Nach dem Login kopieren
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Wie benutze ich eine schöne Suppe, um HTML zu analysieren? Mar 10, 2025 pm 06:54 PM

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

Bildfilterung in Python Bildfilterung in Python Mar 03, 2025 am 09:44 AM

Bildfilterung in Python

So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden So verwenden Sie Python, um die ZiPF -Verteilung einer Textdatei zu finden Mar 05, 2025 am 09:58 AM

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

Wie man mit PDF -Dokumenten mit Python arbeitet Wie man mit PDF -Dokumenten mit Python arbeitet Mar 02, 2025 am 09:54 AM

Wie man mit PDF -Dokumenten mit Python arbeitet

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Wie kann man mit Redis in Django -Anwendungen zwischenstrichen Mar 02, 2025 am 10:10 AM

Wie kann man mit Redis in Django -Anwendungen zwischenstrichen

Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Wie führe ich ein tiefes Lernen mit Tensorflow oder Pytorch durch? Mar 10, 2025 pm 06:52 PM

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

Serialisierung und Deserialisierung von Python -Objekten: Teil 1 Serialisierung und Deserialisierung von Python -Objekten: Teil 1 Mar 08, 2025 am 09:39 AM

Serialisierung und Deserialisierung von Python -Objekten: Teil 1

So implementieren Sie Ihre eigene Datenstruktur in Python So implementieren Sie Ihre eigene Datenstruktur in Python Mar 03, 2025 am 09:28 AM

So implementieren Sie Ihre eigene Datenstruktur in Python

See all articles