„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie durchsucht man Unterordner rekursiv und ruft Dateien in Python ab?

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

Veröffentlicht am 16.11.2024
Durchsuche:660

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 des Unterordners

Die Unterordnervariable soll enthalten der Name des Unterordners unter dem Hauptordner, in dem sich die gewünschte Datei befindet gefunden.

Lösung

Der Schlüssel zur Lösung dieses Problems liegt in der Nutzung der Variable „root“ oder „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.

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']

Verbesserung des Glob-Moduls

Ein alternativer und effizienter Ansatz besteht darin, das in Python integrierte Glob-Modul zu verwenden. Glob zeichnet sich durch die Auswahl von Dateien anhand ihrer Erweiterungen aus.

import os
from glob import glob
result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]

Generatorfunktion

Für eine übersichtliche und effiziente Implementierung kann man auch eine Generatorfunktion verwenden.

from itertools import chain
result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))

Python 3.4 Lösung

Wenn Sie mit Python 3.4 oder höher arbeiten, können Sie rglob() des Pathlib-Moduls nutzen function.

from pathlib import Path
result = list(Path(".").rglob("*.[tT][xX][tT]"))

Diese Ansätze bieten effektive Lösungen für die rekursive Suche nach Unterordnern und das Zusammenstellen einer Liste von Dateien, die den gewünschten Kriterien entsprechen, sodass Ihre Dateiabrufaufgaben zum Kinderspiel werden.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3