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

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.