Zdrojový kód:
Modul globvyhledá 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ář subkterý 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
.