Python

Ako pridať argumenty príkazového riadku do skriptu Python

Ako pridať argumenty príkazového riadku do skriptu Python

Ak ste vyvinuli skript alebo aplikáciu Python určenú na primárne spustenie v terminálových emulátoroch alebo dokonca v aplikáciách GUI, pridanie argumentov príkazového riadku môže zlepšiť jeho použiteľnosť, čitateľnosť kódu, štruktúru aplikácie a celkovú užívateľskú prívetivosť aplikácie pre koncových používateľov. Tieto argumenty príkazového riadku sa tiež nazývajú „voľby“ alebo „prepínače“ a fungujú podobne ako argumenty, ktoré sa zvyčajne vyskytujú v skriptoch bash a iných programoch založených na C / C ++.

Ak chcete pridať argumenty do skriptov Pythonu, budete musieť použiť zabudovaný modul s názvom „argparse“. Ako už názov napovedá, analyzuje argumenty príkazového riadku použité pri spustení skriptu alebo aplikácie Python. Tieto analyzované argumenty tiež kontroluje modul „argparse“, aby sa zabezpečilo, že majú správny „typ“. Ak sú v argumentoch neplatné hodnoty, chyby sa zvýšia.

Používanie modulu argparse možno najlepšie pochopiť na príkladoch. Ďalej uvádzame niekoľko ukážok kódov, ktoré vám pomôžu začať s modulom argparse.

Príklad 1: Generovanie argumentu pomoci a správy

Zvážte ukážku kódu uvedenú nižšie:

import argparse
parser = argparse.ArgumentParser (description = 'Testovací program.")
args = analyzátor.parse_args ()

Prvé vyhlásenie importuje modul „argparse“. Ďalej sa vytvorí nová inštancia objektu „ArgumentParser“ a ako argument sa uvedie krátky popis programu. Objekt ArgumentParser je potrebný na prevod hodnôt argumentov príkazového riadku na dátové typy, ktorým rozumie Python. To sa deje metódou „parse_args“ objektu ArgumentParser, ako je uvedené v poslednom príkaze.

Za predpokladu, že ste uložili vyššie uvedenú ukážku kódu do súboru s názvom „test.py ”, spustením nižšie uvedených príkazov získate pomocné správy týkajúce sa programu.

$ ./ test.py-h
$ ./ test.py - pomoc

Mali by ste dostať nejaký výstup podobný tomuto:

použitie: test.py [-h]
Testovací program.
voliteľné argumenty:
-h, --help zobraziť túto pomocnú správu a ukončiť

Upozorňujeme, že do ukážky kódu uvedenej vyššie nebola pridaná žiadna logika na spracovanie analyzovaných argumentov a ich konverziu na objekty. Pomocné správy pre jednotlivé argumenty sa preto na výstupe nezobrazia. Po pridaní logiky pre spracovanie hodnôt analyzovaných argumentov vo vašom programe začnú pomocné správy zobrazovať popis jednotlivých argumentov.

Príklad 2: Spracovanie reťazcového argumentu

Ak chcete pridať argumenty prijateľné pre váš skript v jazyku python, musíte použiť metódu „add_argument“. Prezrite si nasledujúci kód:

import argparse
parser = argparse.ArgumentParser (description = 'Testovací program.")
parser.add_argument ("print_string", help = "Vypíše zadaný argument.„)
args = analyzátor.parse_args ()
tlač (arg.print_string)

Bol pridaný nový príkaz, ktorý ukazuje použitie metódy „add_argument“. Akýkoľvek argument pridaný pri spustení skriptu bude nástrojom „ArgumentParser“ považovaný za objekt „print_string“.

Upozorňujeme, že v predvolenom nastavení metóda „add_argument“ zaobchádza s hodnotami získanými z argumentov ako s reťazcami, takže v takom prípade nemusíte explicitne špecifikovať „typ“. K pridaným argumentom je tiež priradená predvolená hodnota „Žiadne“, pokiaľ nie je prepísaná.

Znova sa pozrite na pomocnú správu:

použitie: test.py [-h] [reťazec_tlače]
Skúšobný program.
pozičné argumenty:
print_string Vytlačí zadaný argument.
voliteľné argumenty:
-h, --help zobraziť túto pomocnú správu a ukončiť

Jeden z riadkov na výstupe hovorí „pozičné argumenty“. Pretože nie je definované žiadne kľúčové slovo pre argument, v súčasnosti sa argument považuje za „pozičný argument“, kde poradie a pozícia zadaného argumentu majú priamy vplyv na program. Pozitívne argumenty sú tiež povinné, pokiaľ manuálne nezmeníte ich správanie.

Ak chcete definovať a analyzovať voliteľné argumenty, môžete použiť „-“ (dvojitá pomlčka) a zmeniť ich predvolené hodnoty pomocou argumentu „predvolený“.

import argparse
parser = argparse.ArgumentParser (description = 'Testovací program.")
parser.add_argument ("- print_string", help = "Vypíše zadaný argument.", default =” Náhodný reťazec.”)
args = analyzátor.parse_args ()
tlač (arg.print_string)

Teraz, keď spustíte “test.py “skript bez akýchkoľvek argumentov, mali by ste dostať„ Náhodný reťazec.”Ako výstup. Môžete tiež voliteľne použiť kľúčové slovo „-print_string“ na tlač ľubovoľného reťazca podľa vášho výberu.

$ ./ test.py --print_string LinuxHint.com LinuxHint.com

Upozorňujeme, že voliteľný argument môžete urobiť povinným pomocou ďalšieho argumentu „required = True“.

Nakoniec môžete tiež zúžiť verzie argumentu pomocou „-“ (jedna pomlčka), aby ste znížili výrečnosť.

import argparse
parser = argparse.ArgumentParser (description = 'Testovací program.")
parser.add_argument (“- p”, "--print_string", help = "Vypíše zadaný argument.", default =” Náhodný reťazec.”)
args = analyzátor.parse_args ()
tlač (arg.print_string)

Spustenie nasledujúceho príkazu by malo poskytnúť rovnaký výsledok ako vyššie:

$ ./ test.py -p LinuxHint.com

Príklad 3: Spracovanie celočíselného argumentu

Ak chcete spracovať argumenty, ktoré vyžadujú celočíselné hodnoty, musíte nastaviť kľúčové slovo „type“ na „int“, aby ste umožnili overenie a vyhodili chyby v prípade, že podmienka nie je splnená.

import argparse
parser = argparse.ArgumentParser (description = 'Testovací program.")
parser.add_argument ("- p", "--print_string", help = "Vypíše zadaný argument.", typ = int)
args = analyzátor.parse_args ()
tlač (arg.print_string)

Skúste spustiť nasledujúci príkaz:

$ ./ test.py -p LinuxHint.com

Mali by ste dostať túto chybu:

použitie: test.py [-h] [-p PRINT_STRING]
test.py: error: argument -p / - print_string: neplatná int hodnota: 'LinuxHint.com '

Zadaním celočíselnej hodnoty získate správny výsledok:

$ ./ test.py -p 1000 1000

Príklad 4: Zaobchádzajte s prepínačmi True a False

Argumenty môžete zadávať bez akýchkoľvek hodnôt, aby ste s nimi mohli zaobchádzať ako s príznakmi True a False pomocou argumentu „action“.

import argparse
parser = argparse.ArgumentParser (description = 'Testovací program.")
parser.add_argument ("- p", "--print_string", help = "Vypíše zadaný argument.", action =" store_true ")
args = analyzátor.parse_args ()
tlač (arg.print_string)

Spustením príkazu nižšie získate ako výstup jednoduché „True“:

$ ./ test.py -p

Ak spustíte skript bez argumentu „-p“, bude namiesto neho priradená hodnota „False“. Hodnota „store_true“ kľúčového slova „action“ priraďuje premennej „print_string“ hodnotu „True“ vždy, keď je výslovne uvedený argument „-p“, inak je premennej priradená hodnota False.

Príklad 5: Považovať hodnoty argumentov za zoznam

Ak chcete získať viac hodnôt naraz a uložiť ich do zoznamu, musíte zadať kľúčové slovo „nargs“ v nasledujúcom formáte:

import argparse
parser = argparse.ArgumentParser (description = 'Testovací program.")
parser.add_argument ("- p", "--print_string", help = "Vypíše zadaný argument.", nargs = '*')
args = analyzátor.parse_args ()
tlač (arg.print_string)

Spustením nasledujúceho príkazu otestujte vyššie uvedený kód:

$ ./ test.py -p „a“ „b“

Mali by ste dostať nejaký výstup ako tento:

['a', 'b']

Záver

Modul „argparse“ je dosť komplexný s množstvom možností na vyladenie správania aplikácií príkazového riadku a na analýzu hodnôt dodaných používateľom. Tieto príklady sa dotýkajú iba základného použitia modulu „argparse“. Pre pokročilé a zložité aplikácie budete možno potrebovať rôzne implementácie. Úplné vysvetlenie modulu nájdete v oficiálnej dokumentácii.

Hry Najlepšie hry Oculus App Lab
Najlepšie hry Oculus App Lab
Ak ste vlastníkom náhlavnej súpravy Oculus, musíte byť informovaní o bočnom nakladaní. Sideloading je proces inštalácie neuloženého obsahu do náhlavne...
Hry Top 10 hier, ktoré sa dajú hrať na Ubuntu
Top 10 hier, ktoré sa dajú hrať na Ubuntu
Platforma Windows je jednou z dominujúcich platforiem pre hry kvôli obrovskému percentu hier, ktoré sa dnes vyvíjajú na natívnu podporu systému Window...
Hry 5 najlepších arkádových hier pre Linux
5 najlepších arkádových hier pre Linux
V dnešnej dobe sú počítače vážne stroje používané na hranie hier. Ak nemôžete dosiahnuť nové najvyššie skóre, budete vedieť, čo tým myslím. V tomto pr...