Wie man Dateien mit einer bestimmten Endung nur in Python findet

  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

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')]

Verwandter Artikel - Python file-path

  • So erhalten Sie alle Dateien eines Verzeichnisses
  • Wie man prüft, ob eine Datei in Python existiert
  • comments powered by Disqus