Python je v poslední době jedním z nejrozšířenějších univerzálních programovacích jazyků. Poskytuje mnoho vestavěných modulů, funkcí a klíčových slov pro provádění úloh souvisejících se soubory. Glob je termín, který označuje techniky používané k porovnávání určitých vzorů podle pravidel souvisejících se systémem UNIX shell. Operační systémy založené na systému Linux a UNIX poskytují funkci glob() pro vyhledávání souborů a adresářů podle zadaného vzoru. Python také poskytuje vestavěný modul glob pro přístup k souborům a názvům cest, které odpovídají zadanému vzoru, nebo pro jejich načtení. Pro úlohy popsané v tomto článku budeme používat funkci glob() modulu glob jazyka Python. Tento článek vysvětluje, jak používat funkci glob() k vyhledávání názvů cest a souborů podle zadaného vzoru.
- Příklad 1: Shoda názvu souboru nebo cesty s absolutní cestou
- Příklad 2: Použití zástupných znaků pro vyhledání cesty
- Použití zástupného znaku hvězdička (*) pro vyhledávání cesty
- Použití operátoru zástupného znaku s otazníkem (?)
- Použití operátoru zástupného znaku rozsahu
- Rekurzivní vyhledávání souborů pomocí glob()
- Závěr
Příklad 1: Shoda názvu souboru nebo cesty s absolutní cestou
Podívejme se na několik příkladů, abychom pochopili fungování a práci funkce glob(). Začneme jednoduchým příkladem porovnání jména souboru nebo názvu cesty s absolutní cestou. Pokud se jméno souboru nebo název cesty shoduje s absolutní cestou, pak funkce glob() vrátí shody ve formě seznamu; v opačném případě funkce glob() vrátí prázdný seznam.
import glob
#použití funkce glob pro shodu pathname s absolutní cestou
#shoda absolutní cesty adresáře downloads
print(glob.glob(“/home/linuxhint/Downloads”))
#shoda absolutní cesty adresáře documents
print(glob.glob(“/home/linuxhint/Documents”))
#odpovídající absolutní cesta k adresáři Plocha
print(glob.glob(“/home/linuxhint/Desktop”))
#odpovídající absolutní cesta k souborům
print(glob.glob(“/home/linuxhint/Desktop/script.sh”))
print(glob.glob(“/home/linuxhint/Downloads/format.py”))
print(glob.glob(“/home/linuxhint/Documents/calculator.py”))
#určení cesty k souboru, který neexistuje
#funkce glob vrátí prázdný seznam
print(glob.glob(“/home/linuxhint/Documents/myfile.py”))
Výstup
Výstup zobrazuje shody.
Příklad 2: Použití zástupných znaků pro vyhledání cesty
Pro vyhledání cesty je možné použít zástupné znaky pomocí funkce glob(). Nejčastěji používanými zástupnými znaky jsou hvězdička (*), otazník (?), číselný rozsah , a abecední rozsah . Nejprve probereme použití hvězdičky ve funkci glob().
Použití zástupného znaku hvězdička (*) pro vyhledávání cesty
Operátor zástupného znaku hvězdička se používá k porovnání s nulou nebo více znaky absolutní cesty. Pokud nejsou zadány žádné znaky s hvězdičkou, funkce vypíše absolutní cestu ke všem souborům, adresářům a podadresářům zadané cesty. Můžete také napsat některé znaky s hvězdičkou a funkce porovná absolutní cestu na základě zadaných znaků. Pokud například potřebujete zjistit absolutní cestu k souborům .txt, pak můžete použít zástupný znak * jako *.txt.
Tuto funkci implementujeme v našem skriptu Python.
import glob
#zjištění absolutní cesty k souborům a adresářům
print(glob.glob(“/home/linuxhint/Downloads/*”))
print(“—————————————-“)
#zjištění absolutní cesty k souborům .txt v adresáři Desktop
print(glob.glob(“/home/linuxhint/Desktop/*.txt”))
print(“—————————————-“)
#zjištění absolutní cesty k souborům .sh v adresáři Plocha
print(glob.glob(“/home/linuxhint/Desktop/*.sh”))
print(“—————————————-“)
#nalezení absolutní cesty k souborům .py v adresáři Dokumenty
print(glob.glob(“/home/linuxhint/Dokumenty/*.py”))
print(“—————————————-“)
Výstup
Výstup zobrazuje absolutní cestu k souborům a adresářům podle definovaných pravidel ve funkci globe().
Použití operátoru zástupného znaku s otazníkem (?)
Operátor zástupného znaku s otazníkem (?) se používá k přiřazení jednoho znaku. To může být užitečné v situacích, kdy si nejste vědomi jediného znaku v daném názvu.
Tento postup implementujeme v našem skriptu Python.
import glob
#nalezení souboru pomocí operátoru zástupného znaku *
print(glob.glob(“/home/linuxhint/Desktop/file?.txt”)).
Výstup
Výstup zobrazuje přiřazené soubory.
Použití operátoru zástupného znaku rozsahu
Operátor zástupného znaku rozsahu se používá k přiřazení souborů v daném rozsahu znaků nebo čísel. Rozsah se definuje uvnitř hranatých závorek .
Zjistíme absolutní cestu k souborům definováním rozsahu.
import glob
#zjištění absolutní cesty k souborům v daném rozsahu
#definování rozsahu ve znacích
print(glob.glob(“/home/linuxhint/Desktop/*”))
#výpis tečkované čáry pro odlišení výstupu
print(“——————————————“)
#definování rozsahu v číslech
print(glob.glob(“/home/linuxhint/Desktop/*”))
Výstup
Rekurzivní vyhledávání souborů pomocí glob()
Funkce glob přijímá jako argument dva parametry. První parametr definuje název cesty a druhý parametr definuje rekurzivní vlastnost. Druhý parametr je nepovinný a rekurzivní vlastnost je ve výchozím nastavení nastavena na “false”. Můžete však nastavit rekurzivní vlastnost na “true”, abyste našli cestu k souboru rekurzivně.
V našem skriptu Pythonu nastavíme rekurzivní vlastnost na “true” a najdeme absolutní cestu k souborům rekurzivně.
import glob
#nalezení souborů rekurzivně
print(glob.glob(“/home/linuxhint/Documents/*”,recursive=True))
Výstup
Závěr
Glob je běžný termín, který označuje techniky používané k porovnávání určitých vzorů podle pravidel souvisejících se systémem UNIX shell. Python poskytuje vestavěný modul glob a funkci pro přístup k názvům cest podle daných pravidel. Tento článek vysvětluje, jak používat funkci glob() k vyhledávání názvů cest na různých příkladech.