Programovanie

Základy analýzy argumentov príkazového riadku v Pythone

Základy analýzy argumentov príkazového riadku v Pythone

Aplikácie príkazového riadku sú jedným z najstarších a najpoužívanejších typov aplikácií. Ak ste skúseným používateľom systému Linux, je možné, že na vykonanie rovnakej úlohy ste namiesto nástrojov príkazového riadku ťažko používali nástroje GUI. Napríklad Anaconda, správca balíkov pre python, má nástroje príkazového riadku s názvom Conda a nástroj GUI s názvom anaconda navigator.

To, čo robí aplikáciu Command-line obľúbenou medzi vývojármi, je to, že v porovnaní s jej náprotivkom v GUI spotrebuje veľmi málo zdrojov a poskytuje lepší výkon.

Python je jednoduchý a výkonný jazyk na vytváranie aplikácií príkazového riadku. Poskytuje kopu knižníc, ktoré už napísali mnohí vynikajúci programátori, a uľahčuje tak našu prácu, pretože nepotrebujeme prepisovať rovnaký kód.

V tomto tutoriále vám predstavím pythonovu knižnicu Argparse, ktorá dokáže analyzovať argumenty aplikácií príkazového riadku. To je užitočné pri vytváraní skvelých rozhraní príkazového riadku. Podľa tohto návodu sa odporúča mať nainštalovanú najnovšiu verziu pythonu. Máme tiež podrobný návod na aktualizáciu jazyka python na najnovšiu verziu systému Linux.

Úvod

Analýza argumentov je dôležitý koncept, ktorý musíme použiť na vytvorenie výkonných a užívateľsky prívetivých rozhraní príkazového riadku. Ak ste predtým používali aplikácie príkazového riadku, mohli ste si všimnúť, že do aplikácií príkazového riadku môžeme pridať argumenty na konfiguráciu možností nástroja.

Napríklad, ak ste použili je príkaz v systéme Linux, ktorý sa používa na výpis aktuálnych položiek pracovného adresára, možno ste videli výstup niečoho podobného, ​​ako je to znázornené na obrázku nižšie.

Je to príkaz v Linuxe

Ako vidíte na obrázku, obsahuje zoznam položiek v aktuálnom adresári. Môžeme tiež použiť je príkaz je výhodnejší tým, že mu dá argument, ako som to urobil v nasledujúcom príkaze.

ls -a

Teraz po zadaní tohto príkazu do terminálu zobrazí zoznam všetkých položiek nachádzajúcich sa v aktuálnom pracovnom adresári vrátane skrytých položiek. Ako vidíte, poskytnutím argumentov na príkaze môžeme priateľským spôsobom ľahko určiť možnosti príkazu. Tu prichádzajú na rad argumenty. Vďaka nim sú aplikácie príkazového riadku užitočnejšie a prívetivejšie.

Možno by vás zaujímalo, kedy a ako pridať argumenty príkazového riadku do vašich aplikácií. Predstavte si, že vytvárate aplikáciu, ktorá vyžaduje od používateľa zadanie názvu súboru, ktorý aplikácia spracuje.

Môžeme to urobiť dvoma spôsobmi:

Prvý trik je dobrý, ale druhý je užitočnejší, pretože používateľ môže dať všetky možnosti v jednom príkaze, čo ho robí užívateľsky príjemnejším.

Python obsahuje skvelú knižnicu s názvom „argparse“, ktorá je užitočná na vytváranie a analýzu argumentov príkazového riadku a umožňuje používateľom veľmi ľahko vytvárať výkonné rozhrania príkazového riadku. Poďme sa hlboko ponoriť do knižnice argparse v pythone.

Knižnica Argparse

The argparse Knižnica je ľahký a užitočný spôsob syntaktickej analýzy argumentov pri vytváraní aplikácií príkazového riadku v pythone. Aj keď existujú ďalšie argumenty, ktoré analyzujú knižnice ako optparse, getopt, atď., the argparse Knižnica je oficiálne odporúčaným spôsobom na analýzu argumentov príkazového riadku.

Je tiež k dispozícii v štandardnej knižnici pythonu, takže nepotrebujeme žiadnu manuálnu konfiguráciu. The argparse knižnica bola zostavená pomocou optparse knižnica pythonu, ale argparse je užitočnejšia a priateľskejšia pre vývojárov ako optparse knižnica.

Praktická ukážka Argparse

Pozrime sa na praktické ukážka toho, ako používať knižnicu argparse na vytvorenie jednoduchého rozhrania príkazového riadku. Tento program prijme cestu a skontroluje, či cesta existuje alebo nie, a ak existuje, potom vytlačí, či ide o súbor alebo adresár.

import os import argparse parser = argparse.Analyzátor ArgumentParser ('description = "Path Existence Checker").add_argument ("- cesta", help = "zadajte cestu a skontrolujte, či existuje") args = parser.parse_args () input_path = argumenty.cesta ak os.cesta.isdir (input_path): print ("Cesta existuje a je to adresár") elif os.cesta.isfile (input_path): print ("Cesta existuje a je to súbor") else: print ("Cesta neexistuje")
Pri spustení vyššie uvedeného programu môžeme skontrolovať, či cesta existuje alebo nie.

ukážka syntaktickej analýzy argumentov

Môžete tiež použiť -h argument s programom, ktorý je predvoleným argumentom na zobrazovanie správ pomoci.

predvolená pomocná správa

Vysvetlím vám, ako funguje vyššie uvedený program. V prvých dvoch riadkoch sme importovali moduly, ktoré budeme v programe vyžadovať. The os bol importovaný modul, aby skontroloval, či cesta existuje alebo nie, či ide o súbor alebo adresár. Ak sa chcete dozvedieť viac informácií o os modulu, môžete si prečítať nášho sprievodcu prácou s os v pythone.V ďalšom riadku sme importovali knižnicu argparse potrebnú na vytvorenie a analýzu argumentov. V treťom riadku vytvoríme objekt parseru pomocou triedy ArgumentParser knižnice argparse. Táto trieda akceptuje aj popis voliteľného parametra, ktorý sa zobrazí v pomocnej správe.V nasledujúcom riadku sme pomocou metódy add_argument () objektu parseru vytvorili argument s názvom path a v parametri help poskytli podrobnosti, ktoré sa zobrazia v správe pomoci, ako sme videli na výstupe skôr.Ďalej analyzujeme argumenty pomocou metódy parse_args () objektu analyzátora a ako argument pristupujeme k vstupnej ceste používateľa. Dostali sme cestu, ktorú zadal používateľ do argumentu, a potom sme ju pomocou modulu os skontrolovali, či ide o súbor alebo priečinok. Ak nie je medzi týmito dvoma, vytlačí, že cesta neexistuje.

Prispôsobenie

Pozrime sa na niektoré prispôsobenia, ktoré môžeme urobiť v našom rozhraní príkazového riadku pomocou knižnice argparse.

Pomoc s prispôsobeným používaním

Keď spustíme ukážkový program, ktorý sme vytvorili skôr pomocou -h parameter dostaneme pomoc programu ako výstup, ktorý vygenerovala knižnica argparse. Ak si všimnete správu pomoci, v hornom riadku sa nachádza pomoc s používaním, ktorá nám ukazuje, ako ju používať.V našom ukážkovom programe sme dostali štandardnú pomoc s používaním. Stále ho môžeme ľahko prispôsobiť pomocou parametra použitia pri vytváraní objektu parseru pomocou triedy ArgumentParser (). Pozrite sa na nasledujúci kód, ktorý bude upravený v našom ukážkovom programe.
parser = argparse.ArgumentParser (description = "Path Existence Checker", usage = "cla.cesta py ")
Tu je výstup:

vlastné použitie pomoc pri

Ako vidíme na výstupe, pomoc s používaním sa zmenila na tú, ktorú zadáme v parametri použitia triedy ArgumentParser ().

Prispôsobenie argumentov

Môžeme tiež použiť knižnicu Argparse na prispôsobenie argumentov, ako sú argumenty, ktoré sa budú alebo nebudú vyžadovať, čím sa argumentom nastaví predvolená hodnota.

Pridáva sa predvolená hodnota

Argumentom môžeme dať predvolenú hodnotu pomocou predvoleného parametra add_argument () metóda. Napríklad pozri nižšie uvedený kód.

import os import argparse parser = argparse.ArgumentParser (description = "Path Existence Checker", usage = "cla.py cesta ") parser.add_argument ("- cesta", help = "zadajte cestu, aby ste skontrolovali, či existuje", default = "názov súboru.txt ") args = analyzátor.parse_args () input_path = argumenty.path if input_path == None: exit () elif os.cesta.isdir (input_path): print ("Cesta existuje a je to adresár") elif os.cesta.isfile (input_path): print ("Cesta existuje a je to súbor") else: print ("Cesta neexistuje")

Pri spustení vyššie uvedeného programu bez akýchkoľvek argumentov dostaneme výstup nižšie. Ako je zobrazené na výstupe, program skontroluje cestu názov súboru.TXT, ktoré sme nastavili v predvolenom parametri.

dávať argumentom predvolenú hodnotu

Stanovenie požiadaviek na argumenty

Môžeme tiež použiť knižnicu Argparse na nastavenie požiadaviek argumentu, t.j.e., či budú argumenty potrebné alebo nie. Aby sme to dosiahli, musíme použiť požadovaný parameter, ako je znázornené v nasledujúcom kóde.

import os import argparse parser = argparse.ArgumentParser (description = "Path Existence Checker", usage = "cla.py cesta ") parser.add_argument ("- cesta", help = "zadajte cestu, aby ste skontrolovali, či existuje", default = "názov súboru.txt ", required = True) args = parser.parse_args () input_path = argumenty.path if input_path == None: exit () elif os.cesta.isdir (input_path): print ("Cesta existuje a je to adresár") elif os.cesta.isfile (input_path): print ("Cesta existuje a je to súbor") else: print ("Cesta neexistuje")

Pri spustení vyššie uvedeného kódu bez akýchkoľvek argumentov sa zobrazí chyba, že budú požadované nasledujúce argumenty.

stanovenie požiadaviek na argumenty

Typ argumentu

Môžeme tiež nastaviť dátový typ použitý v argumente. Napríklad, ak potrebujeme cestu, mali by sme dať dátový typ reťazca. Ak užívateľ zadá dátový typ, ktorý nie je reťazec, Argparser ho zmení na reťazec. Ak chcete nastaviť predvolený typ argumentu, spustite kód uvedený nižšie.

import os import argparse parser = argparse.ArgumentParser (description = "Path Existence Checker", usage = "cla.py cesta ") parser.add_argument ("- cesta", help = "zadajte cestu a skontrolujte, či existuje", typ = str) args = parser.parse_args () input_path = argumenty.path if input_path == None: exit () elif os.cesta.isdir (input_path): print ("Cesta existuje a je to adresár") elif os.cesta.isfile (input_path): print ("Cesta existuje a je to súbor") else: print ("Cesta neexistuje")

Výkon:

s uvedením dátového typu argumentov

Záver

Toto sú iba základy analýzy argumentov pomocou knižnice Argparse. Po absolvovaní tohto tutoriálu sa odporúča prečítať si oficiálnu dokumentáciu a preskúmať ďalšie triky používania tejto knižnice. Môžete tiež vidieť príspevok o prihlásení v pythone, ktorý je veľmi užitočný na písanie veľkých aplikácií a ľahké ladenie.

Hry Najlepšie hry z príkazového riadku pre systém Linux
Najlepšie hry z príkazového riadku pre systém Linux
Príkazový riadok nie je pri použití systému Linux iba vaším najväčším spojencom - môže byť tiež zdrojom zábavy, pretože ho môžete použiť na hranie mno...
Hry Najlepšie aplikácie na mapovanie gamepadu pre Linux
Najlepšie aplikácie na mapovanie gamepadu pre Linux
Ak radi hráte hry v systéme Linux s gamepadom namiesto typického systému vstupu pre klávesnicu a myš, máte tu niekoľko užitočných aplikácií. Mnoho hie...
Hry Užitočné nástroje pre hráčov systému Linux
Užitočné nástroje pre hráčov systému Linux
Ak radi hráte hry v systéme Linux, je pravdepodobné, že ste na vylepšenie herného zážitku použili aplikácie a pomôcky ako Wine, Lutris a OBS Studio. O...