Wie man Dateien mit einer bestimmten Endung nur in Python findet

Jinku Hu 30 Januar 2023
  1. glob.glob Methode, um Dateien mit einer bestimmten Erweiterung zu finden
  2. os.listdir() Methode zum Finden von Dateien mit einer bestimmten Endung
  3. pathlib.glob Methode, um Dateien mit bestimmten Erweiterungen zu finden
  4. Dateien mit einer bestimmten Erweiterung im Verzeichnis und seinen Unterverzeichnissen in Python finden
  5. pathlib Modul sucht rekursiv nach Dateien
Wie man Dateien mit einer bestimmten Endung nur in Python findet

Dieser Artikel stellt verschiedene Methoden vor, wie man Dateien mit einer bestimmten Erweiterung nur in Python finden kann.

glob.glob Methode, um Dateien mit einer bestimmten Erweiterung zu finden

Wir könnten das Modul glob.glob verwenden, um die Dateien mit einer bestimmten Erweiterung nur in Python zu finden.

import glob

targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)

Die obigen Codes demonstrieren, wie man die Dateien mit der Erweiterung txt im Verzeichnis C:\Test findet.

os.listdir() Methode zum Finden von Dateien mit einer bestimmten Endung

Die Funktion os.listdir() listet alle Dateien im angegebenen Verzeichnis auf, ohne die Dateipfadinformation. Sie können die Dateien mit der spezifischen Erweiterung mit der Funktion str.endswith() extrahieren.

>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']

Sie müssen den vollständigen Pfad mit der Funktion os.path.join() konstruieren.

>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']

pathlib.glob Methode, um Dateien mit bestimmten Erweiterungen zu finden

Das pathlib Modul wird in Python 3.4 eingeführt, das objektorientierte Dateisystempfade anbietet. Es bietet zwei Stile: Windows-Pfade in Windows-Betriebssystemen und POSIX-Pfade in Unix-ähnlichen Systemen.

>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]

Das Ergebnis wird mit WindowsPath dargestellt, und Sie können das Ergebnis in die String-Darstellung konvertieren, indem Sie str() hinzufügen, wie

>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']

Dateien mit einer bestimmten Erweiterung im Verzeichnis und seinen Unterverzeichnissen in Python finden

Das Muster C:\Test\*.txt durchsucht nur die txt Dateien im Verzeichnis C:\Test, aber nicht in seinen Unterverzeichnissen. Wenn Sie auch die txt Dateien in den Unterverzeichnissen erhalten wollen, können Sie das Muster ein wenig modifizieren.

import glob

targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)

Die Platzhalter ** zwischen Test und \*.txt bedeuten, dass es die txt Dateien sowohl im Verzeichnis als auch in seinen Unterverzeichnissen finden sollte.

pathlib Modul sucht rekursiv nach Dateien

Ähnlich wie das Hinzufügen von ** in glob.glob, um Dateien rekursiv zu suchen, können Sie auch ** in der pathlib.Path.glob Methode hinzufügen, um die Dateien mit einer bestimmten Endung rekursiv zu finden.

>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"**\*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]
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