Abrufen einer Liste von Datei- und Verzeichnisnamen in Python.

Geschäft

Um eine Liste von Datei- und Verzeichnisnamen (Ordnernamen) in Python zu erhalten, verwenden Sie die os-Modul-Funktion os.listdir().

os.listdir(path='.')
Gibt eine Liste mit den Namen der Einträge in dem durch Pfad angegebenen Verzeichnis zurück.
os — Miscellaneous operating system interfaces — Python 3.10.0 Documentation

Das Modul os ist in der Standardbibliothek enthalten und muss nicht installiert werden. Allerdings ist ein “import” erforderlich.

Hier finden Sie die folgenden Informationen.

  • Abrufen einer Liste von Datei- und Verzeichnisnamen.
  • Nur eine Liste von Dateinamen abrufen
  • Nur eine Liste von Verzeichnisnamen abrufen

Im Folgenden finden Sie ein Beispiel für eine Datei-(Verzeichnis-)Struktur.

.
└── testdir
    ├── dir1
    ├── dir2
    ├── file1
    ├── file2.txt
    └── file3.jpg

Zusätzlich zu os.listdir() können Sie auch das Modul glob verwenden, um eine Liste von Datei- und Verzeichnisnamen (Ordnernamen) zu erhalten. glob ermöglicht es Ihnen, Bedingungen mit Platzhaltern (*) usw. anzugeben und rekursiv Unterverzeichnisse einzuschließen.

Ab Python 3.4 ist es auch möglich, eine Liste von Dateien und Verzeichnissen zu erhalten, indem man das Modul pathlib verwendet, das Pfade als Objekte manipulieren kann. Wie globs oben kann es auch bedingt und rekursiv verwendet werden.

Abrufen einer Liste von Datei- und Verzeichnisnamen.

Wenn Sie os.listdir() so verwenden, wie es ist, gibt es eine Liste von Datei- und Verzeichnisnamen zurück.

import os

path = "./testdir"

files = os.listdir(path)
print(type(files))  # <class 'list'>
print(files)        # ['dir1', 'dir2', 'file1', 'file2.txt', 'file3.jpg']

Das Ergebnis ist eine Liste von Pfadzeichenketten.

Nur eine Liste von Dateinamen abrufen

Wenn Sie nur eine Liste von Dateinamen erhalten möchten, verwenden Sie die Funktion os.path.isfile(), um festzustellen, ob es sich bei dem Pfad um eine Datei handelt. Wenn Sie nur den Dateinamen als Argument der Funktion os.path.isfile() übergeben, funktioniert das nicht, geben Sie also den vollständigen Pfad wie unten gezeigt an.
os.path.isfile(os.path.join(path, f))

files = os.listdir(path)
files_file = [f for f in files if os.path.isfile(os.path.join(path, f))]
print(files_file)   # ['file1', 'file2.txt', 'file3.jpg']

Nur eine Liste von Verzeichnisnamen abrufen

Wenn Sie nur eine Liste von Verzeichnisnamen erhalten möchten, verwenden Sie os.path.isdir() auf die gleiche Weise.

files = os.listdir(path)
files_dir = [f for f in files if os.path.isdir(os.path.join(path, f))]
print(files_dir)    # ['dir1', 'dir2']
Copied title and URL