Source code: Lib/glob.py
Das glob
Modul findet alle Pfadnamen, die mit einem angegebenen Muster übereinstimmen, gemäß den von der Unix-Shell verwendeten Regeln, wobei die Ergebnisse in beliebiger Reihenfolge zurückgegeben werden. Es wird keine Tilde-Expansion durchgeführt, aber *
, ?
und mit ausgedrückte Zeichenfolgen werden korrekt zugeordnet. Dies geschieht durch die gleichzeitige Verwendung der Funktionen
os.scandir()
und fnmatch.fnmatch()
und nicht durch den eigentlichen Aufruf einer Subshell. Beachten Sie, dass glob
im Gegensatz zu fnmatch.fnmatch()
Dateinamen, die mit einem Punkt (.
) beginnen, als Sonderfälle behandelt (für Tilde und Shell-Variablenexpansion verwenden Sie os.path.expanduser()
undos.path.expandvars()
).)
Für eine wörtliche Übereinstimmung werden die Metazeichen in eckige Klammern eingeschlossen, z.B. passt ''
auf das Zeichen '?'
.
Siehe auch
Das Modul pathlib
bietet High-Level-Pfadobjekte.
glob.
glob
(Pfadname, *, rekursiv=False)¶
Gibt eine möglicherweise leere Liste von Pfadnamen zurück, die mit pathname übereinstimmen. pathname muss eine Zeichenkette sein, die eine Pfadspezifikation enthält. pathname kann entweder absolut (wie /usr/src/Python-1.5/Makefile
) oder relativ (wie../../Tools/*/*.gif
) sein und kann Shell-ähnliche Wildcards enthalten. Brokensymlinks sind in den Ergebnissen enthalten (wie in der Shell). Ob die Ergebnisse sortiert sind oder nicht, hängt vom Dateisystem ab. Wenn eine Datei, die die Bedingungen erfüllt, während des Aufrufs dieser Funktion entfernt oder hinzugefügt wird, ist nicht festgelegt, ob ein Pfadname für diese Datei eingeschlossen werden soll.
Wenn rekursiv wahr ist, wird das Muster „**
“ auf alle Dateien und null oder mehr Verzeichnisse, Unterverzeichnisse und symbolische Links auf Verzeichnisse passen. Wenn das Muster von einem os.sep
oder os.altsep
gefolgt wird, passen die Dateien nicht.
Löst ein Überprüfungsereignis glob.glob
mit den Argumenten pathname
, recursive
aus.
Hinweis
Die Verwendung des Musters „**
“ in großen Verzeichnisbäumen kann übermäßig viel Zeit in Anspruch nehmen.
Geändert in Version 3.5: Unterstützung für rekursive Globs mit „**
„.
glob.
iglob
(Pfadname, *, rekursiv=False)¶
Rückgabe eines Iterators, der die gleichen Werte wie glob()
liefert, ohne sie alle gleichzeitig zu speichern.
Löst ein Prüfereignis glob.glob
mit den Argumenten pathname
, recursive
aus.
glob.
escape
(Pfadname)¶
Entfernt alle Sonderzeichen ('?'
, '*'
und '.txt'
.
Neu in Version 3.4.
Betrachten wir zum Beispiel ein Verzeichnis, das die folgenden Dateien enthält:1.gif
, 2.txt
, card.gif
und ein Unterverzeichnis sub
, das nur die Datei 3.txt
enthält. glob()
führt zu den folgenden Ergebnissen. Beachten Sie, dass alle führenden Komponenten des Pfades erhalten bleiben.
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Wenn das Verzeichnis Dateien enthält, die mit .
beginnen, werden diese standardmäßig nicht gefunden. Betrachten wir zum Beispiel ein Verzeichnis, das card.gif
und.card.gif
enthält:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Siehe auch
Modul fnmatch
Shell-Stil Dateinamen- (nicht Pfad-) Erweiterung