Programování

Základy analýzy argumentů příkazového řádku v Pythonu

Základy analýzy argumentů příkazového řádku v Pythonu

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.

Je to příkaz v Linuxu

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:

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.

demo analýzy argumentů s argparse

Můžete také použít -h argument s programem, což je výchozí argument pro zobrazení zpráv nápovědy.

Výchozí zpráva nápovědy argparse

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:

nápověda k vlastnímu použití v argparse

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.

dávat argumentům výchozí hodnotu

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.

stanovení požadavků argumentů

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:

určení datového typu argumentů

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í.

Hry Jak zvýšit FPS v Linuxu?
Jak zvýšit FPS v Linuxu?
FPS znamená Snímků za sekundu. Úkolem FPS je měřit snímkovou frekvenci při přehrávání videa nebo herních výkonech. Jednoduše řečeno, počet nepřerušova...
Hry Nejlepší hry Oculus App Lab
Nejlepší hry Oculus App Lab
Pokud jste vlastníkem náhlavní soupravy Oculus, musíte mít informace o bočním nakládání. Sideloading je proces instalace neukládaného obsahu do náhlav...
Hry Top 10 her k hraní na Ubuntu
Top 10 her k hraní na Ubuntu
Platforma Windows byla jednou z dominujících platforem pro hraní her kvůli velkému procentu her, které se dnes vyvíjejí, aby nativně podporovaly Windo...