Heim > Artikel > Backend-Entwicklung > Wie durchsucht man Unterordner rekursiv und ruft Dateien in Python ab?
Rekursive Unterordnersuche und Dateiabruf
Im Bereich der Programmierung kann das Durchsuchen von Verzeichnissen und das Abrufen von Dateien eine häufige Aufgabe sein. Ein effizienter Ansatz besteht darin, einen rekursiven Algorithmus zu verwenden, um Unterordner zu durchsuchen und eine Liste von Dateien zu erstellen, die bestimmte Kriterien erfüllen.
Problem aufgetreten
Ein Benutzer ist auf eine Straßensperre gestoßen beim Versuch, eine Liste bestimmter Dateien in einer rekursiven Unterordnersuche zu erstellen. Das Problem entstand durch die Unterordnervariable, die eine Liste von Unterordnern anstelle des aktuellen Ordners, der die Datei enthält, einzog.
Zweck von Unterordner
Die Unterordnervariable soll enthalten der Name des Unterordners unter dem Hauptordner, in dem sich die gewünschte Datei befindet.
Lösung
Der Schlüssel zur Lösung dieses Problems liegt in der Nutzung des „Root“ oder die Variable „dirpath“ anstelle von „subFolder“. Diese Variable enthält den absoluten Pfad zum aktuellen Verzeichnis, das während der Rekursion durchlaufen wird. Durch die Einbeziehung dieses Pfads in die Konstruktion des Dateinamenpfads kann die gewünschte Genauigkeit erreicht werden.
<code class="python">import os result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']</code>
Verbesserung des Glob-Moduls
Ein alternativer und effizienter Ansatz besteht in der Verwendung von Python Integriertes Glob-Modul. Glob zeichnet sich durch die Auswahl von Dateien anhand ihrer Erweiterungen aus.
<code class="python">import os from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]</code>
Generatorfunktion
Für eine übersichtliche und effiziente Implementierung kann man auch eine Generatorfunktion verwenden.
<code class="python">from itertools import chain result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))</code>
Python 3.4-Lösung
Wenn Sie mit Python 3.4 oder höher arbeiten, können Sie die rglob()-Funktion des Pathlib-Moduls nutzen.
<code class="python">from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))</code>
Diese Ansätze bieten effektive Lösungen für die rekursive Suche in Unterordnern und das Zusammenstellen einer Liste von Dateien, die den gewünschten Kriterien entsprechen, sodass Ihre Dateiabrufaufgaben zum Kinderspiel werden.
Das obige ist der detaillierte Inhalt vonWie durchsucht man Unterordner rekursiv und ruft Dateien in Python ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!