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

How Add Command Line Arguments Python Script



Ak ste vyvinuli skript alebo aplikáciu Python, ktorá má byť primárne spustená v emulátoroch terminálu alebo dokonca v aplikáciách GUI, pridanie argumentov príkazového riadka môže zlepšiť jej 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 riadka sa tiež nazývajú možnosti alebo prepínače a fungujú podobne ako argumenty, ktoré zvyčajne vidíte v skriptoch bash a iných programoch založených na C / C ++.

Na pridanie argumentov do skriptov Pythonu budete musieť použiť vstavaný modul s názvom argparse. Ako naznačuje názov, analyzuje argumenty príkazového riadka použité pri spustení skriptu alebo aplikácie Python. Tieto analyzované argumenty kontroluje aj modul argparse, aby sa ubezpečil, že sú správneho typu. Chyby sa vyvolávajú, ak sú v argumentoch neplatné hodnoty.







Použitie modulu argparse je možné najlepšie pochopiť na príkladoch. Nasleduje niekoľko ukážok kódu, ktoré vám pomôžu začať s modulom argparse.



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

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



importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

args= analyzátor.parse_args()

Prvý príkaz importuje modul argparse. Ďalej sa vytvorí nová inštancia objektu ArgumentParser a ako argument sa dodá krátky popis programu. Objekt ArgumentParser je potrebný na konverziu hodnôt argumentov príkazového riadka na dátové typy, ktorým rozumie Python. To sa vykonáva 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 správy súvisiace s programom.

$ ./test.py-h

$ ./test.py-Pomoc

Mali by ste získať nejaký výstup podobný tomuto:



použitie: test.py [-h]


Testovací program.


voliteľné argumenty:

-h, --help zobraziť túto správu pomocníka a ukončiť

Všimnite si toho, že do vyššie uvedenej ukážky kódu nebola pridaná žiadna logika na spracovanie analyzovaných argumentov a ich konverziu na objekty. Pomocné správy pre jednotlivé argumenty sa preto vo výstupe nezobrazujú. Akonáhle do programu pridáte logiku na spracovanie hodnôt analyzovaných argumentov, v správach pomocníka sa začne zobrazovať popis jednotlivých argumentov.

Príklad 2: Zaobchádzajte s argumentom reťazca

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

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('print_string', Pomoc='Vytlačí dodaný argument.')

args= analyzátor.parse_args()

vytlačiť(args.print_string)

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

Všimnite si toho, že metóda add_argument štandardne považuje hodnoty získané z argumentov za reťazce, takže v tomto prípade nemusíte typ explicitne špecifikovať. K prepísaným argumentom je priradená aj predvolená hodnota None.

Ešte raz si pozrite správu pomoci:

použitie: test.py [-h] [print_string]


Testovací program.


pozičné argumenty:

print_string Vytlačí dodaný argument.


voliteľné argumenty:

-h, --help zobraziť túto správu pomocníka a ukončiť

Jeden z riadkov vo výstupe hovorí o pozičných argumentoch. Pretože nie je definované žiadne kľúčové slovo pre argument, v súčasnej dobe je argument považovaný za pozičný argument, kde poradie a poloha zadaného argumentu má priamy vplyv na program. Pozičné argumenty sú tiež povinné, pokiaľ ručne 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 predvoleného argumentu.

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('--print_string', Pomoc='Vytlačí dodaný argument.',predvolené=TOnáhodný reťazec.)

args= analyzátor.parse_args()

vytlačiť(args.print_string)

Keď teraz spustíte skript test.py bez akéhokoľvek argumentu, mali by ste dostať náhodný reťazec. ako výstup. Voliteľne môžete tiež použiť kľúčové slovo –print_string na vytlačenie ľubovoľného reťazca podľa vlastného výberu.

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

Upozorňujeme, že voliteľný argument môžete nastaviť ako povinný pomocou dodatočného argumentu required = True.

Nakoniec môžete tiež skrátené verzie argumentu definovať pomocou - (jedna pomlčka) na zníženie výrečnosti.

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument(-p, '--print_string', Pomoc='Vytlačí dodaný argument.',predvolené=TOnáhodný reťazec.)

args= analyzátor.parse_args()

vytlačiť(args.print_string)

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

$ ./test.py-p Linux Tip.s

Príklad 3: Zaobchádzajte s celočíselným argumentom

Aby ste zvládli argumenty, ktoré vyžadujú celočíselné hodnoty, musíte nastaviť kľúčové slovo type na int, aby bolo možné validovať a vyvolávať chyby v prípade, že podmienka nie je splnená.

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('-p', '--print_string', Pomoc='Vytlačí dodaný argument.', typ=int)

args= analyzátor.parse_args()

vytlačiť(args.print_string)

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

$ ./test.py-p Linux Tip.s

Mala by sa vám zobraziť taká chyba:

použitie: test.py [-h] [-p PRINT_STRING]

test.py: error: argument -p/-print_string: invalid int value: 'LinuxHint.com'

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

$ ./test.py-p1 0001 000

Príklad 4: Zaobchádzajte s pravdivými a nepravdivými prepínačmi

Argumenty môžete odovzdať bez akýchkoľvek hodnôt, aby ste ich mohli považovať za príznaky True a False pomocou argumentu akcie.

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('-p', '--print_string', Pomoc='Vytlačí dodaný argument.',akcie='store_true')

args= analyzátor.parse_args()

vytlačiť(args.print_string)

Spustením nižšie uvedeného príkazu získate ako výstup jednoduchú hodnotu True:

$ ./test.py-p

Ak skript spustíte bez argumentu -p, namiesto neho bude priradená falošná hodnota. Hodnota store_true akčného kľúčového slova priradí premennej print_string hodnotu True, kedykoľvek je argument -p explicitne zadaný, inak je premennej priradená hodnota False.

Príklad 5: Považujte 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:

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('-p', '--print_string', Pomoc='Vytlačí dodaný argument.',nargs='*')

args= analyzátor.parse_args()

vytlačiť(args.print_string)

Na otestovanie kódu vyššie spustite nasledujúci príkaz:

$ ./test.py-p a b

Mali by ste získať nejaký výstup takto:

['a', 'b']

Záver

Modul argparse je dosť komplexný s množstvom možností na vyladenie správania aplikácií príkazového riadka a analýzu hodnôt dodaných používateľmi. Tieto príklady sa dotýkajú iba základného použitia modulu argparse. V prípade pokročilých a zložitých aplikácií budete možno potrebovať rôzne implementácie. Navštíviť oficiálna dokumentácia úplné vysvetlenie modulu.