glob

Während der Arbeit mit Dateien in Python kann es notwendig sein, Dateien basierend auf einem bestimmten Muster zu suchen. Das glob-Modul in Python stellt Funktionen bereit, um Listen von Dateien zu erstellen, die einem bestimmten Muster entsprechen, wie beispielsweise Platzhalterzeichen, und unterstützt die rekursive Suche mit "**". So können wir das Modul importieren und verwenden:
import glob

txt_files = glob.glob('*.txt')     # Ruft alle .txt-Dateien im aktuellen Verzeichnis ab
print(txt_files, type(txt_files))  # Gibt die Liste der .txt-Dateien und deren Typ aus
Angenommen, im aktuellen Verzeichnis befinden sich drei Textdateien: file1.txt, file2.txt und file3.txt, dann würde die Ausgabe folgendermaßen aussehen:
['file1.txt', 'file2.txt', 'file3.txt'] <class 'list'>
Die glob-Funktion nimmt ein Muster als String und gibt eine Liste von Datei- und Verzeichnispfaden zurück, die diesem Muster entsprechen.
In unserem vorherigen Beispiel haben wir das Platzhalterzeichen * verwendet, das für null oder mehr Zeichen steht. Daher entspricht *.txt allen Dateien, die auf .txt enden.
Wir können auch Dateien in Unterverzeichnissen rekursiv suchen:
nested_files = glob.glob('**/*.txt', recursive=True)  # Ruft alle .txt-Dateien rekursiv ab
print(nested_files, type(nested_files))               # Gibt die Liste der .txt-Dateien und deren Typ aus
Angenommen, zusätzlich zu unseren bisherigen Dateien haben wir auch einen Ordner folder1 im aktuellen Verzeichnis, der die Dateien file4.txt und file5.txt enthält, würde die Ausgabe folgendermaßen aussehen:
['file1.txt', 'file2.txt', 'file3.txt', 'folder1/file4.txt', 'folder1/file5.txt'] <class 'list'>
Hier haben wir ** in unserem Muster verwendet. Dieses Symbol in einem Dateipfad-Muster steht für alle Dateien sowie null oder mehr Verzeichnisse und Unterverzeichnisse. Wir haben auch das Argument recursive=True verwendet, um der Funktion zu ermöglichen, in Unterverzeichnissen zu suchen. Daher ruft '**/*.txt', recursive=True alle .txt-Dateien aus dem aktuellen Verzeichnis und seinen Unterverzeichnissen ab.
Dies ist eine nützliche Methode, um mit Dateipfaden umzugehen und Dateiverarbeitungsaufgaben in Python zu automatisieren.

Herausforderung: Finde .py-Dateien

Als neuer Data Scientist in einem Tech-Startup hast du die Aufgabe, alle Python-Dateien in deinem aktuellen Projekt zu organisieren. Aufgrund des Stresses der letzten Wochen sind die Python-Dateien (.py) über das gesamte aktuelle Verzeichnis verstreut. Deine Aufgabe ist es, ein Python-Programm zu erstellen, das glob verwendet, um alle im aktuellen Verzeichnis vorhandenen Python-Dateien (.py) aufzulisten. Da du jedoch nur an den Namen der Dateien interessiert bist und nicht an ihrem Speicherort, sollte die Ausgabe nur die Dateinamen ohne den Verzeichnispfad enthalten.
Das Programm muss keine Eingaben entgegennehmen.
Die Ausgabe des Programms sollte die Namen der Python-Dateien im aktuellen Verzeichnis enthalten, jeder Name in einer neuen Zeile. Schließe den Verzeichnispfad nicht in die Ausgabe ein. Die Ausgabe sollte alphabetisch sortiert sein.
Eingabe
Ausgabe
experiment.py file1.py file2.py main.py my_program.py
Beachte, dass das Programm im aktuellen Verzeichnis ausgeführt wird und die Ausgabe daher auch die Datei main.py (die dein Programm enthält) einschließt.
 

Constraints

Time limit: 2 seconds

Memory limit: 512 MB

Output limit: 1 MB

To check your solution you need to sign in
Sign in to continue