In diesem Tutorial behandeln wir alles, was Sie zum Auflisten von Dateien in einem Verzeichnis mit Python wissen müssen.
Python ist eine Allzwecksprache, die in einer Vielzahl von Bereichen wie Data Science, Machine Learning und sogar in der Webentwicklung verwendet wird. Es scheint keine Einschränkung in der Anwendung der Python-Sprache.
Daher scheint es ziemlich trivial Python kann verwendet werden, um Dateien und Verzeichnisse in jedem System aufzulisten., Ziel dieses Artikels ist es, den Leser über die Möglichkeiten zum Auflisten von Dateien in einem System mit Python aufzuklären.
Listen Sie alle Dateien in einem Verzeichnis mit Python auf
Zum Zweck der Interaktion mit Verzeichnissen in einem System mit Python wird die os
Bibliothek verwendet.
1. Mit der‘ os ‚ – Bibliothek
ist listdir () Die Methode, die wir für unser Motiv anwenden werden. Wie der Name schon sagt, wird es verwendet, um Elemente in Verzeichnissen aufzulisten.,
# Importing the os libraryimport os# The path for listing itemspath = '.'# The list of itemsfiles = os.listdir(path)# Loop to print each filename separatelyfor filename in files:print(filename)
Ausgabe:
game_file.pyhi-lo_pygame.pyJournaldevlist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
Linux-Benutzer können die obige Ausgabe mithilfe des Standardbefehls ls
auf dem Terminal problemlos abgleichen.
Da die Ausgaben jeder Methode übereinstimmen.
2., Die Verwendung der ‚glob‘ – Bibliothek
glob
ist meistens eine Dateinamenmustervergleichsbibliothek, kann jedoch verwendet werden, um Elemente im aktuellen Verzeichnis aufzulisten:
Ausgabe:
game_file.pyhi-lo_pygame.pyJournaldevlist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
Das Platzhalterzeichen '*'
wird verwendet, um alle Elemente im aktuellen Verzeichnis abzugleichen. Da wir die Elemente des aktuellen Verzeichnisses anzeigen möchten, müssen wir die rekursive Natur der Funktion glob()
ausschalten.
3., Liste nur Dateien im aktuellen Verzeichnis
In den obigen Methoden gab der Python-Code alle Elemente im aktuellen Verzeichnis unabhängig von ihrer Natur zurück. Wir können nur die Dateien mit der path.isfile()
Funktion in der os
Bibliothek extrahieren.
Ausgabe:
game_file.pyhi-lo_pygame.pylist_files1.pyhi_lo_pygame.mp4test.pylist_files.pymy_program.cppa.outcut.cpp
Im obigen Codeausschnitt wird das Listenverständnis verwendet, um nur die Elemente herauszufiltern, die tatsächlich eine Datei sind.,
Ein weiterer wichtiger Punkt ist, dass der obige Code nicht für andere Verzeichnisse funktioniert, da die Variable 'f'
kein absoluter Pfad ist, sondern ein relativer Pfad zum aktuellen Verzeichnis.
Listen Sie alle Dateien in einem Verzeichnis rekursiv auf
Um die Dateien in einem Verzeichnis und seinen Unterverzeichnissen zu drucken, müssen wir sie rekursiv durchlaufen.
1. Mit der‘ os ‚ – Bibliothek
Mit Hilfe derwalk()
– Methode können wir jedes Unterverzeichnis nacheinander in einem Verzeichnis durchlaufen.,
Ausgabe:
Dieos.walk()
– Methode folgt einfach jedem Unterverzeichnis und extrahiert die Dateien standardmäßig von oben nach unten. Es gibt drei Iteratoren verwendet für gehen durch die Ausgabe von os.walk()
Funktion:
-
path
– Diese variable enthält das vorliegende Verzeichnis der Funktion, ist die Beobachtung während einer bestimmten iteration -
folders
– Diese variable wird eine Liste von Verzeichnissen innerhalb des'path'
– Verzeichnis., -
files
– Eine Liste von Dateien im Verzeichnis'path'
.
Diejoin()
– Methode wird verwendet, um den Dateinamen mit seinem übergeordneten Verzeichnis zu verketten und uns den relativen Pfad zur Datei bereitzustellen.
2. Mit der‘ glob ‚- Bibliothek
Ähnlich dem obigen Verfahren kann glob
jedes Verzeichnis rekursiv aufrufen, alle Elemente extrahieren und zurückgeben.,
Ausgabe:
Das Symbol , das zusammen mit der Pfadvariablen verwendet wird, weist die Funktion glob()
an, Dateien in einem beliebigen Unterverzeichnis abzugleichen. Die '*'
weist die Funktion an, mit allen Elementen in einem Verzeichnis übereinzustimmen.
Da wir nur die Dateien im vollständigen Verzeichnis extrahieren möchten, filtern wir die Dateien mit der zuvor verwendeten Funktion isfile()
heraus.
Listen Sie alle Unterverzeichnisse in einem Verzeichnis auf
Anstatt Dateien aufzulisten, können wir alle Unterverzeichnisse in einem bestimmten Verzeichnis auflisten.,
Ausgabe:
./Documents/Journaldev
Der geringfügige Unterschied zwischen der Auflistung von Dateien und Verzeichnissen besteht in der Auswahl des Iterators während des Prozesses der Funktion os.walk()
. Für Dateien iterieren wir über die Variable files. Hier durchlaufen wir die Ordnervariable.
Dateien in einem Verzeichnis mit absolutem Pfad auflisten
Sobald wir wissen, wie Dateien in einem Verzeichnis aufgelistet werden, ist die Anzeige des absoluten Pfads ein Kinderspiel. Dieabspath()
Methode liefert uns den absoluten Pfad für eine Datei.,
Ausgabe:
Eine Sache, die hier zu beachten ist, ist, dass abspath()
mit dem relativen Pfad der Datei versehen werden muss und das ist der Zweck der join()
Funktion.
Listen Sie Dateien in einem Verzeichnis nach übereinstimmenden Mustern auf
Es gibt mehrere Möglichkeiten, Dateinamen herauszufiltern, die einem bestimmten Muster entsprechen. Lassen Sie uns jeden von ihnen einzeln durchgehen.
1. Mit der‘ fnmatch ‚ – Bibliothek
Wie der Name schon sagt, ist fnmatch
eine Dateinamenmustervergleichsbibliothek., Mit fnmatch
mit unseren Standard-Bibliotheken zum Extrahieren von Dateinamen können wir diese Dateien herausfiltern, die einem bestimmten Muster entsprechen.
Ausgabe:
List of files containing "file" in them./Documents/game_file.py./Documents/list_files1.py./Documents/list_files.py
Die Funktion fnmatch()
nimmt zwei Parameter auf, den Dateinamen gefolgt von dem abzustimmenden Muster. Im obigen Code betrachten wir alle Dateien, die das Wort enthalten.
2. Mit der‘ glob ‚- Bibliothek
Wie bereits erwähnt, glob's
Hauptzweck ist der Dateinamenmustervergleich.,
Ausgabe:
./Documents/list_files1.py
Der obige reguläre Ausdruck '**/**.*'
kann wie folgt erklärt werden:
3. Die Verwendung der‘ pathlib ‚ -Bibliothek
pathlib
folgt einer objektorientierten Art der Interaktion mit dem Dateisystem. Die rglob()
Funktion in der Bibliothek kann verwendet werden, um rekursiv Liste von Dateien über einen bestimmten Pfad Objekt zu extrahieren.
Diese Liste von Dateien kann mithilfe eines Musters innerhalb der Funktion rglob()
gefiltert werden.,
Ausgabe:
Documents/my_program.cppDocuments/Journaldev/mastermind.py
Mit dem obigen Codeausschnitt werden alle Dateien aufgelistet, die mit dem Buchstaben 'm'
beginnen.
Dateien in einem Verzeichnis mit einer bestimmten Erweiterung auflisten
Das Auflisten von Dateien mit einer bestimmten Erweiterung in Python ähnelt dem Mustervergleich. Zu diesem Zweck müssen wir ein Muster in Bezug auf die Dateierweiterung erstellen.
Ausgabe:
Die Funktion fnmatch()
filtert die Dateien heraus, die mit '.py'
enden, dh Python-Dateien., Wenn wir Dateien mit verschiedenen Erweiterungen extrahieren möchten, müssen wir diesen Teil des Codes ändern. Um beispielsweise nur C++ – Dateien abzurufen, muss '.cpp'
verwendet werden.
Dies fasst die Möglichkeiten zusammen, eine Liste von Dateien in einem Verzeichnis mit Python abzurufen.
Schlussfolgerung
Es kann mehrere Möglichkeiten geben, jedes Problem zu lösen, und das bequemste ist nicht immer die Antwort. In Bezug auf diesen Artikel muss ein Python-Programmierer jede Möglichkeit kennen, Dateien in einem Verzeichnis aufzulisten.