„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 kann ich mit Python effizient nach Dateien in mehreren Verzeichnissen suchen?

Wie kann ich mit Python effizient nach Dateien in mehreren Verzeichnissen suchen?

Veröffentlicht am 08.11.2024
Durchsuche:783

How can I use Python to efficiently search for files across multiple directories?

Eine Datei in Python suchen

Dateien in Python zu finden kann eine Herausforderung sein, wenn der Speicherort der Datei auf verschiedenen Systemen unterschiedlich ist. Glücklicherweise bietet Python das Modul os.walk, mit dem Sie mühelos Verzeichnisse durchsuchen und Dateien finden können.

os.walk für die Dateisuche

os.walk erstellt einen Generator Objekt, das ein Verzeichnis und seine Unterverzeichnisse durchläuft und für jede Iteration drei Tupel ergibt:

  • root (str): Absoluter Pfad zum aktuellen Verzeichnis
  • dirs (list): Liste von Unterverzeichnisse im aktuellen Verzeichnis
  • Dateien (Liste): Liste der Dateien im aktuellen Verzeichnis

Eine einzelne Datei suchen

Zu finden Beim ersten Vorkommen einer bestimmten Datei iterieren Sie einfach über die erhaltenen Tupel und prüfen, ob der Dateiname in der Liste der Dateien enthalten ist:

import os

def find(name, path):
    for root, dirs, files in os.walk(path):
        if name in files:
            return os.path.join(root, name)

Alle Vorkommen einer Datei finden

Um alle Vorkommen einer Datei zu finden, erstellen Sie eine Liste zum Speichern der Übereinstimmungen :

def find_all(name, path):
    result = []
    for root, dirs, files in os.walk(path):
        if name in files:
            result.append(os.path.join(root, name))
    return result

Übereinstimmende Dateimuster

Um nach Dateien zu suchen, die einem Muster entsprechen, verwenden Sie das fnmatch-Modul:

import os, fnmatch
def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                result.append(os.path.join(root, name))
    return result

find('*.txt', '/path/to/dir')
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