Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich mit Python effizient nach Dateien in mehreren Verzeichnissen suchen?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-29 02:35:29821Durchsuche

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

Eine Datei in Python finden

Das Suchen von Dateien in Python 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:

<code class="python">import os

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

Alle Vorkommen einer Datei finden

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

<code class="python">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</code>

Übereinstimmende Dateimuster

Um nach übereinstimmenden Dateien zu suchen Um ein Muster zu erstellen, verwenden Sie das fnmatch-Modul:

<code class="python">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')</code>

Das obige ist der detaillierte Inhalt vonWie kann ich mit Python effizient nach Dateien in mehreren Verzeichnissen suchen?. 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