So erhalten Sie alle Dateien eines Verzeichnisses

Jinku Hu 10 Oktober 2023
  1. os.listdir um alle Dateien in einem Verzeichnis in Python zu erhalten
  2. os.walk um alle Dateien in einem Verzeichnis in Python zu erhalten
  3. glob.glob um alle Dateien in einem Verzeichnis in Python zu erhalten
So erhalten Sie alle Dateien eines Verzeichnisses

Sie könnten mindestens 3 Methoden haben, um alle Dateien eines Verzeichnisses in Python aufzulisten, indem Sie die Python-Funktionen os.listdir, os.walk und glob.glob verwenden.

Im Folgenden wird die Vermutung dieses Tutorials dargelegt,

  1. Python-Version - Python 3
  2. Der Pfadname ist dirPath und er existiert im System, daher brauchen wir die Existenz des Verzeichnisses nicht zu überprüfen.

os.listdir um alle Dateien in einem Verzeichnis in Python zu erhalten

os.listdir listet alle Dateien und Ordner im Verzeichnis auf, daher benötigt es zusätzlichen Code, um Dateien aus dem Ergebnis zu filtern.

import os

dirPath = r"C:\git\DelftStack\content"
result = [f for f in os.listdir(dirPath) if os.path.isfile(os.path.join(dirPath, f))]
print(result)

os.listdir gibt nur den relativen Pfad der Dateien oder Ordner mit Bezug auf dirPath zurück, und die Funktion os.path.isfile benötigt den vollständigen Pfad, um zu prüfen, ob es sich um eine Datei handelt oder nicht. Daher müssen wir os.path.join benutzen, um den dirPath und die Ergebnisse von os.listdir zu kombinieren, um den vollständigen Pfad von entweder Dateien oder Pfaden zu erhalten.

os.walk um alle Dateien in einem Verzeichnis in Python zu erhalten

os.walk generates the file names in the given directory by traversing the tree top-down (per default) or bottom-up. It yields a 3-tuple (dirpath, dirname, filenames) each time it walks to the directory in the tree (including top itself).

Alle Dateien sind im Tupel für die erste Ausbeute von os.walk enthalten, daher ist ein pythonischer Weg

import os

dirPath = r"C:\git\DelftStack\content"
result = next(os.walk(dirPath))[2]
print(result)

glob.glob um alle Dateien in einem Verzeichnis in Python zu erhalten

Das glob Modul findet alle Pfadnamen, die dem angegebenen spezifischen Muster entsprechen, gemäß den in der Unix-Shell verwendeten Regeln. glob.glob gibt die Liste der Pfadnamen zurück, die dem angegebenen Pfadnamensmuster entsprechen. Der Dateipfad hat das Muster *.*, das ist das, was an glob.glob als Eingabeargument übergeben wird.

import glob

dirPathPattern = r"C:\git\DelftStack\content\*.*"
result = glog.glob(dirPathPattern)
print(result)

glob.glob gibt den vollen Pfad der übereinstimmenden Dateien zurück, wie C:\git\DelftStack\content\about.rst.

Warnung

Das Ergebnis der glob.glob Methode, wie hier gezeigt, kann nicht garantieren, dass es sich um reine Dateien handelt, da nur geprüft wird, ob der Pfadname mit dem Muster übereinstimmt, nicht aber, ob es sich um eine Datei oder ein Verzeichnis handelt.

Wenn zum Beispiel ein Verzeichnis das Namensmuster wie test.test hat, dann wird dieses Verzeichnis auch in das Ergebnis einbezogen.

Wenn Sie sicherstellen müssen, dass die Ausgabe nur Dateien enthält, müssen Sie sie mit der Funktion os.path.isfile überprüfen.

Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - Python File

Verwandter Artikel - Python Dictionary