Kod źródłowy: Lib/glob.py
Moduł glob
znajduje wszystkie nazwy plików pasujące do podanego wzorca zgodnie z regułami używanymi przez powłokę uniksową, chociaż wyniki są zwracane w arbitralnej kolejności. Nie jest wykonywana interpretacja tyld, ale *
, ?
i zakresy znaków wyrażone za pomocą będą poprawnie dopasowane. Odbywa się to przez zgodne użycie funkcji
os.scandir()
i fnmatch.fnmatch()
, a nie przez faktyczne wywołanie podpowłoki. Zauważ, że w przeciwieństwie do fnmatch.fnmatch()
, glob
traktuje nazwy plików rozpoczynające się od kropki (.
) jako przypadki specjalne.(Do interpretacji tyldy i zmiennych powłoki użyj os.path.expanduser()
ios.path.expandvars()
.)
Dla dopasowania dosłownego, zawiń metaznaki w nawiasy.Na przykład, ''
pasuje do znaku '?'
.
Zobacz także
Moduł pathlib
oferuje obiekty ścieżki wysokiego poziomu.
glob.
glob
(pathname, *, recursive=False)ś
Zwraca możliwie pustą listę nazw ścieżek pasujących do pathname, która musi być łańcuchem zawierającym specyfikację ścieżki. pathname może być bezwzględna (jak /usr/src/Python-1.5/Makefile
) lub względna (jak../../Tools/*/*.gif
) i może zawierać znaki wieloznaczne w stylu powłoki. Brokensymlinki są uwzględniane w wynikach (tak jak w powłoce). To czy wyniki są sortowane czy nie, zależy od systemu plików. Jeżeli plik spełniający warunki zostanie usunięty lub dodany podczas wywołania tej funkcji, to nie jest określone, czy nazwa ścieżki dla tego pliku zostanie uwzględniona.
Jeśli rekurencyjność jest prawdziwa, to wzorzec „**
” dopasuje dowolne pliki i zero lub więcej katalogów, podkatalogów i dowiązań symbolicznych do katalogów. Jeśli po wzorcu występuje os.sep
lub os.altsep
, pliki nie zostaną dopasowane.
Wywołuje zdarzenie audytu glob.glob
z argumentami pathname
, recursive
.
Uwaga
Używanie wzorca „**
” w dużych drzewach katalogów może pochłaniać nadmierną ilość czasu.
Zmienione w wersji 3.5: Wsparcie dla rekurencyjnych globów używających „**
„.
glob.
iglob
(pathname, *, recursive=False)¶
Zwraca iterator, który daje te same wartości co glob()
bez faktycznego przechowywania ich wszystkich jednocześnie.
Wywołuje zdarzenie audytu glob.glob
z argumentami pathname
, recursive
.
glob.
escape
(pathname)Ś
Usuń wszystkie znaki specjalne ('?'
, '*'
i '.txt'
.
Nowość w wersji 3.4.
Na przykład, rozważmy katalog zawierający następujące pliki:1.gif
, 2.txt
, card.gif
i podkatalog sub
, który zawiera tylko plik 3.txt
. glob()
da następujące wyniki. Zauważ, że zachowane są wszystkie początkowe elementy ścieżki.
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Jeśli katalog zawiera pliki zaczynające się od .
, domyślnie nie zostaną one dopasowane. Na przykład, rozważmy katalog zawierający card.gif
i.card.gif
:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Zobacz też
Moduł fnmatch
Rozwijanie nazw plików (a nie ścieżek) w stylu shella
.