Zdrojový kód:
Modul glob
vyhledá všechny názvy cest odpovídající zadanému vzorupodle pravidel používaných unixovým shellem, ačkoli výsledky jsou vráceny v libovolném pořadí. Neprovádí se expanze tildy, ale *
, ?
a znakové rozsahy vyjádřené pomocí budou správně porovnány. Toho je dosaženo společným použitím funkcí
os.scandir()
a fnmatch.fnmatch()
, nikoliv skutečným vyvoláním podprocesoru. Všimněte si, že na rozdíl od fnmatch.fnmatch()
,glob
považuje jména souborů začínající tečkou (.
) za zvláštní případy (pro expanzi tildy a proměnné shellu použijte os.path.expanduser()
aos.path.expandvars()
.)
Pro doslovnou shodu zabalte metaznaky do závorek, například ''
odpovídá znaku '?'
.
Viz také
Modul pathlib
nabízí objekty cesty vysoké úrovně.
glob.
glob
(pathname, *, recursive=False)¶
Vrátí případně prázdný seznam názvů cest, které odpovídají pathname, což musí být řetězec obsahující specifikaci cesty. pathname může být absolutní(jako /usr/src/Python-1.5/Makefile
) nebo relativní (jako../../Tools/*/*.gif
) a může obsahovat zástupné znaky ve stylu shellu. Do výsledků jsou zahrnuty zprostředkované odkazy (stejně jako v shellu). To, zda jsou výsledky setříděny, závisí na souborovém systému. Pokud je během volání této funkce odstraněn nebo přidán soubor, který splňujepodmínky, není určeno, zda bude zahrnuto jméno cesty k tomuto souboru.
Je-li rekurzivní hodnota true, vzor „**
“ bude odpovídat libovolným souborům a nule nebo více adresářům, podadresářům a symbolickým odkazům na adresáře. Pokud za vzorem následuje os.sep
nebo os.altsep
, pak soubory nebudou odpovídat.
Vyvolá kontrolní událost glob.glob
s argumenty pathname
, recursive
.
Poznámka
Použití vzoru „**
“ ve velkých adresářových stromech může spotřebovat nepřiměřené množství času.
Změněno ve verzi 3.5: Podpora rekurzivních globů pomocí „**
„.
glob.
iglob
(pathname, *, recursive=False)¶
Vrací iterátor, který poskytuje stejné hodnoty jako glob()
bez skutečného uložení všech současně.
Vyvolá kontrolní událost glob.glob
s argumenty pathname
, recursive
.
glob.
escape
(pathname)¶
Vyvolá všechny speciální znaky ('?'
, '*'
a '.txt'
.
Novinka ve verzi 3.4.
Příklad uvažujme adresář obsahující následující soubory:1.gif
, 2.txt
, card.gif
a podadresář sub
který obsahuje pouze soubor 3.txt
. glob()
přinese následující výsledky. Všimněte si, jak jsou zachovány všechny úvodní složky cesty:
>>> import glob>>> glob.glob('./.*')>>> glob.glob('*.gif')>>> glob.glob('?.gif')>>> glob.glob('**/*.txt', recursive=True)>>> glob.glob('./**/', recursive=True)
Pokud adresář obsahuje soubory začínající .
, nebudou standardně porovnány. Uvažujme například adresář obsahující card.gif
a.card.gif
:
>>> import glob>>> glob.glob('*.gif')>>> glob.glob('.c*')
Viz také
Modul fnmatch
Rozšíření názvu souboru (nikoli cesty) ve stylu shellu
.