Heim  >  Artikel  >  Backend-Entwicklung  >  Wie durchsucht man Unterordner rekursiv und ruft Dateien in Python ab?

Wie durchsucht man Unterordner rekursiv und ruft Dateien in Python ab?

Susan Sarandon
Susan SarandonOriginal
2024-10-30 04:12:28162Durchsuche

How to Recursively Search Sub-Folders and Retrieve Files in Python?

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!

Stellungnahme:
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