Aplikace příkazového řádku jsou jedním z nejstarších a nejpoužívanějších typů aplikací. Pokud jste zkušeným uživatelem systému Linux, je možné, že ke stejnému úkolu jste místo nástrojů příkazového řádku použili jen nástroje GUI. Například Anaconda, správce balíčků pro python, má nástroje příkazového řádku s názvem Conda a nástroj GUI s názvem anaconda navigator.
Věc, díky které je aplikace příkazového řádku oblíbená mezi vývojáři, spočívá v tom, že ve srovnání se svým protějškem GUI spotřebovává velmi málo zdrojů a poskytuje lepší výkon.
Python je jednoduchý a výkonný jazyk pro vytváření aplikací příkazového řádku. Poskytuje spoustu knihoven již napsaných mnoha skvělými programátory, což usnadňuje náš úkol, protože nepotřebujeme přepisovat stejný kód.
V tomto tutoriálu vám představím pythonovu knihovnu Argparse, která dokáže analyzovat argumenty aplikací příkazového řádku. To je užitečné pro vytváření skvělých rozhraní příkazového řádku. Chcete-li postupovat podle tohoto tutoriálu, doporučujeme mít nainstalovanou nejnovější verzi pythonu. Máme také podrobný návod na aktualizaci pythonu na nejnovější verzi v Linuxu.
Úvod
Analýza argumentů je důležitý koncept, který musíme použít k vytvoření výkonných a uživatelsky přívětivých rozhraní příkazového řádku. Pokud jste dříve používali aplikace příkazového řádku, možná jste si všimli, že můžeme do aplikací příkazového řádku přidat argumenty pro konfiguraci možností nástroje.
Například pokud jste použili je příkaz v Linuxu, který se používá k výpisu aktuálních položek pracovního adresáře, možná jste viděli výstup něco podobného, jak je znázorněno na následujícím obrázku.
Jak vidíte na obrázku, obsahuje seznam položek v aktuálním adresáři. Můžeme také použít je Příkaz příznivěji tím, že mu dá argument, jako jsem to udělal v následujícím příkazu.
je -a
Nyní při psaní tohoto příkazu do terminálu zobrazí seznam všech položek přítomných v aktuálním pracovním adresáři, včetně skrytých položek. Jak vidíte, poskytnutím argumentů na příkazu můžeme snadno určit možnosti příkazu přátelským způsobem. Tady vstupují do hry argumenty. Díky nim jsou aplikace příkazového řádku užitečnější a přívětivější.
Možná vás zajímá, kdy a jak přidat argumenty příkazového řádku do vašich aplikací. Představte si, že vytváříte aplikaci, která vyžaduje zadání uživatelského jména souboru, který aplikace zpracuje.
Můžeme to udělat dvěma způsoby:
- vyzváním uživatele k přidání názvu souboru nebo
- poskytnutím uživateli k přidání názvu souboru jako argumentu do příkazu.
První trik je dobrý, ale druhý je užitečnější, protože uživatel může dát všechny možnosti v jednom příkazu, díky čemuž je uživatelsky přívětivější.
Python obsahuje skvělou knihovnu s názvem „argparse“, která je užitečná pro vytváření a analýzu argumentů příkazového řádku a umožňuje uživatelům snadno vytvářet výkonná rozhraní příkazového řádku. Pojďme se hlouběji ponořit do pythonovy knihovny argparse.
Knihovna Argparse
The argparse Knihovna je snadný a užitečný způsob, jak analyzovat argumenty při vytváření aplikací příkazového řádku v pythonu. I když existují další argumenty analyzující knihovny jako optparse, getopt, atd., the argparse Knihovna je oficiálně doporučeným způsobem pro analýzu argumentů příkazového řádku.
Je také k dispozici ve standardní knihovně pythonu, takže nepotřebujeme žádnou manuální konfiguraci. The argparse knihovna byla vytvořena pomocí optparse knihovna pythonu, ale argparse je užitečnější a přátelštější pro vývojáře než optparse knihovna.
Praktická ukázka Argparse
Podívejme se na praktické ukázky, jak používat knihovnu argparse k vytvoření jednoduchého rozhraní příkazového řádku. Tento program přijme cestu a zkontroluje, zda cesta existuje nebo neexistuje, a pokud existuje, potom vytiskne, zda se jedná o soubor nebo adresář.
import os import argparse parser = argparse.Analyzátor ArgumentParser ('description = "Path Existence Checker").add_argument ("- cesta", help = "zadejte cestu ke kontrole, zda existuje") args = parser.parse_args () input_path = args.cesta, pokud os.cesta.isdir (input_path): print ("Cesta existuje a je to adresář") elif os.cesta.isfile (input_path): print ("Cesta existuje a je to soubor") else: print ("Cesta neexistuje")Při spuštění výše uvedeného programu můžeme zkontrolovat, zda cesta existuje nebo ne. Můžete také použít -h argument s programem, což je výchozí argument pro zobrazení zpráv nápovědy. Vysvětlím vám, jak výše uvedený program funguje. V prvních dvou řádcích jsme importovali moduly, které budeme v programu potřebovat. The os byl importován modul, aby se zkontrolovalo, zda cesta existuje či nikoli, a zda se jedná o soubor nebo adresář. Pokud se chcete dozvědět více o os modulu, můžete se podívat na našeho průvodce prací s OS v pythonu.V dalším řádku jsme importovali knihovnu argparse potřebnou k vytvoření a analýze argumentů. Ve třetím řádku vytvoříme analyzátor pomocí třídy ArgumentParser v knihovně argparse. Tato třída také přijímá popis volitelného parametru, který se zobrazí ve zprávě nápovědy.Na dalším řádku jsme vytvořili argument s názvem cesta pomocí metody add_argument () objektu analyzátoru a poskytli podrobnosti v parametru nápovědy, které se zobrazí ve zprávě nápovědy, jak jsme viděli ve výstupu dříve.Dále analyzujeme argumenty pomocí metody parse_args () objektu analyzátoru a přistupujeme k vstupní cestě uživatele jako argument. Dostali jsme cestu, kterou uživatel zadal do argumentu, a poté jsme ji pomocí modulu os zkontrolovali, zda se jedná o soubor nebo složku. Pokud není mezi těmito dvěma, vytiskne, že cesta neexistuje.
Přizpůsobení
Podívejme se na některá přizpůsobení, která můžeme provést v našem rozhraní příkazového řádku pomocí knihovny argparse.Nápověda k vlastnímu použití
Když spustíme demo program, který jsme vytvořili dříve pomocí -h dostaneme pomoc programu jako výstup, který vygenerovala knihovna argparse. Pokud si všimnete zprávy nápovědy, v horním řádku je nápověda k použití, která nám ukazuje, jak ji používat.V našem ukázkovém programu máme standardní pomoc s používáním. Stále jej můžeme snadno přizpůsobit pomocí parametru usage při vytváření objektu parseru pomocí třídy ArgumentParser (). Podívejte se na níže uvedený kód, který bude v našem demo programu upraven.parser = argparse.ArgumentParser (description = "Path Existence Checker", usage = "cla.py cesta ")Zde je výstup: Jak vidíme na výstupu, nápověda k použití byla změněna na tu, kterou zadáme v parametru použití třídy ArgumentParser ().
Přizpůsobení argumentů
Můžeme také použít knihovnu Argparse k přizpůsobení argumentů, jako jsou argumenty, které budou vyžadovány nebo ne, což dává argumentu výchozí hodnotu.
Přidání výchozí hodnoty
Můžeme dát argumentům výchozí hodnotu pomocí výchozího parametru do add_argument () metoda. Například viz níže uvedený kód.
import os import argparse parser = argparse.ArgumentParser (description = "Path Existence Checker", usage = "cla.py cesta ") parser.add_argument ("- cesta", help = "zadejte cestu ke kontrole, zda existuje", default = "název souboru.txt ") args = analyzátor.parse_args () input_path = args.path if input_path == None: exit () elif os.cesta.isdir (input_path): print ("Cesta existuje a je to adresář") elif os.cesta.isfile (input_path): print ("Cesta existuje a je to soubor") else: print ("Cesta neexistuje")
Při spuštění výše uvedeného programu bez jakéhokoli argumentu získáme níže uvedený výstup. Jak je znázorněno na výstupu, program zkontroluje cestu název souboru.txt, které jsme nastavili ve výchozím parametru.
Stanovení požadavků na argumenty
Můžeme také použít knihovnu Argparse k nastavení požadavků argumentu, tj.E., zda budou argumenty nutné nebo ne. K tomu musíme použít požadovaný parametr, jak je znázorněno v níže uvedeném kódu.
import os import argparse parser = argparse.ArgumentParser (description = "Path Existence Checker", usage = "cla.py cesta ") parser.add_argument ("- cesta", help = "zadejte cestu ke kontrole, zda existuje", default = "název souboru.txt ", required = True) args = parser.parse_args () input_path = args.path if input_path == None: exit () elif os.cesta.isdir (input_path): print ("Cesta existuje a je to adresář") elif os.cesta.isfile (input_path): print ("Cesta existuje a je to soubor") else: print ("Cesta neexistuje")
Při spuštění výše uvedeného kódu bez jakýchkoli argumentů se zobrazí chyba, že budou vyžadovány následující argumenty.
Typ argumentu
Můžeme také nastavit datový typ použitý v argumentu. Například pokud potřebujeme cestu, měli bychom dát datový typ řetězce. Pokud uživatel zadá datový typ, který není řetězcem, Argparser jej změní na řetězec. Chcete-li nastavit výchozí typ argumentu, spusťte níže uvedený kód.
import os import argparse parser = argparse.ArgumentParser (description = "Path Existence Checker", usage = "cla.py cesta ") parser.add_argument ("- cesta", help = "zadejte cestu ke kontrole, zda existuje", typ = str) args = parser.parse_args () input_path = args.path if input_path == None: exit () elif os.cesta.isdir (input_path): print ("Cesta existuje a je to adresář") elif os.cesta.isfile (input_path): print ("Cesta existuje a je to soubor") else: print ("Cesta neexistuje")
Výstup:
Závěr
Toto jsou pouze základy analýzy argumentů pomocí knihovny Argparse. Po absolvování tohoto kurzu se doporučuje přečíst si oficiální dokumentaci a prozkoumat další triky používání této knihovny. Můžete také vidět příspěvek o používání přihlašování v pythonu, což je velmi užitečné pro psaní velkých aplikací a snadné ladění.