So durchsuchen Sie Unterordner effizient rekursiv nach bestimmten Dateitypen
Bei der Skripterstellung ist es häufig erforderlich, Unterordner innerhalb eines Hauptordners gründlich zu durchsuchen . In Python kann die Funktion os.walk Verzeichnisse rekursiv durchlaufen. Es kann jedoch schwierig sein, nur Dateien eines bestimmten Typs zu extrahieren.
Im bereitgestellten Beispiel besteht das Ziel darin, eine Liste aller „.txt“-Dateien in einem Hauptordner und seinen Unterordnern zu erstellen. Der Code verwendet os.walk, um alle Dateien und Unterordner zu durchlaufen, aber subFolder enthält eine Liste von Unterordnern anstelle des richtigen Unterordners für jede Datei.
Um dieses Problem zu beheben, wird die Variable „root“ verwendet, die den aktuellen Wert darstellt Verzeichnispfad, sollte anstelle von Unterordner verwendet werden. Jede Datei hat ihr entsprechendes Stammverzeichnis, das ihren Speicherort im Dateisystem angibt.
Hier ist eine optimierte Lösung:
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']
Dieser Code durchläuft alle Stammverzeichnisse, Unterverzeichnisse und Dateien im PATH-Ordner. Dateien mit der Erweiterung „.txt“ werden zur Ergebnisliste hinzugefügt.
Alternativ kann das Glob-Modul die erweiterungsbasierte Auswahl vereinfachen:
from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]
Für Python 3.4 eine prägnantere Lösung Die Verwendung von Pathlib ist verfügbar:
from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))
Diese Lösungen durchsuchen effizient Unterordner, extrahieren Dateien basierend auf der Erweiterung und geben sie als Liste zurück.
Das obige ist der detaillierte Inhalt vonWie kann man mit Python effizient alle „.txt'-Dateien in Unterordnern finden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!