Kako dodati argumente naredbenog retka u Python skriptu

How Add Command Line Arguments Python Script



Ako ste razvili Python skriptu ili aplikaciju namijenjenu prvenstveno izvođenju u terminalskim emulatorima ili čak aplikacijama za grafičko sučelje, dodavanje argumenata naredbenog retka može poboljšati njezinu upotrebljivost, čitljivost koda, strukturu aplikacije i sveukupnu prilagođenost aplikacije krajnjim korisnicima. Ovi argumenti naredbenog retka nazivaju se i opcijama ili prekidačima i rade slično kao i argumenti koje obično vidite u bash skriptama i drugim programima temeljenim na C / C ++.

Da biste dodali argumente Python skriptama, morat ćete koristiti ugrađeni modul pod imenom argparse. Kao što naziv govori, on analizira argumente naredbenog retka koji se koriste pri pokretanju Python skripte ili aplikacije. Ove raščlanjene argumente provjerava i modul argparse kako bi se osiguralo da su ispravnog tipa. Pogreške se pojavljuju ako u argumentima postoje nevažeće vrijednosti.







Korištenje argparse modula najbolje se može razumjeti kroz primjere. Ispod su neki uzorci koda koji će vam pomoći da započnete s modulom argparse.



Primjer 1: Generirajte argument i poruku pomoći

Razmotrite uzorak koda u nastavku:



uvozargparse

parser =argparse.ArgumentParser(opis='Testni program.')

args= parser.parse_args()

Prva naredba uvozi argparse modul. Zatim se stvara nova instanca objekta ArgumentParser i daje se kratki opis programa kao argument. Objekt ArgumentParser potreban je za pretvaranje vrijednosti argumenata naredbenog retka u tipove podataka koje razumije Python. To se radi metodom parse_args objekta ArgumentParser, kako je prikazano u posljednjoj naredbi.





Pretpostavimo da ste gore navedeni uzorak koda spremili u datoteku pod nazivom test.py, izvođenjem naredbi u nastavku dobit ćete poruke pomoći povezane s programom.

$ ./test.py-h

$ ./test.py-Pomozite

Trebali biste dobiti neke rezultate slične ovoj:



upotreba: test.py [-h]


Testni program.


izborni argumenti:

-h, --help prikaži ovu poruku pomoći i izađi

Imajte na umu da gore navedenom uzorku koda nije dodana nikakva logika za rukovanje raščlanjenim argumentima i njihovo pretvaranje u objekte. Stoga se poruke pomoći za pojedinačne argumente ne prikazuju u ispisu. Nakon što dodate logiku za rukovanje vrijednostima raščlanjenih argumenata u vašem programu, poruke pomoći počet će prikazivati ​​opis za pojedinačne argumente.

Primjer 2: Rukovanje nizom argumenata

Da biste dodali argumente prihvatljive vašoj python skripti, morate koristiti metodu add_argument. Pogledajte sljedeći kod:

uvozargparse

parser =argparse.ArgumentParser(opis='Testni program.')

parser.add_argument('print_string', Pomozite='Ispisuje dostavljeni argument.')

args= parser.parse_args()

ispisati(args.ispisni niz)

Dodana je nova izjava koja prikazuje uporabu metode add_argument. ArgumentParser će svaki argument dodan pri pokretanju skripte tretirati kao objekt print_string.

Imajte na umu da prema zadanim postavkama metoda add_argument tretira vrijednosti dohvaćene iz argumenata kao nizove, tako da u ovom slučaju ne morate izričito navesti vrstu. Zadana vrijednost None dodjeljuje se i dodanim argumentima, osim ako nije nadjačana.

Još jednom pogledajte poruku pomoći:

upotreba: test.py [-h] [ispisni niz]


Testni program.


pozicijski argumenti:

print_string Ispisuje isporučeni argument.


izborni argumenti:

-h, --help prikaži ovu poruku pomoći i izađi

Jedan od redaka u ispisu govori o pozicijskim argumentima. Budući da nije definirana ključna riječ za argument, trenutno se argument tretira kao pozicijski argument gdje redoslijed i položaj dostavljenog argumenta imaju izravan učinak na program. Pozicijski argumenti također su obvezni, osim ako ručno promijenite njihovo ponašanje.

Za definiranje i raščlanjivanje neobaveznih argumenata možete koristiti - (dvostruka crtica) i promijeniti zadane vrijednosti pomoću zadanog argumenta.

uvozargparse

parser =argparse.ArgumentParser(opis='Testni program.')

parser.add_argument('--print_string', Pomozite='Ispisuje dostavljeni argument.',zadano=DOslučajno niz.)

args= parser.parse_args()

ispisati(args.ispisni niz)

Sada kada pokrenete test.py skriptu bez ikakvih argumenata, trebali biste dobiti slučajni niz. kao izlaz. Također možete izborno koristiti ključnu riječ –print_string za ispis bilo kojeg niza po vašem izboru.

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

Imajte na umu da neobavezni argument možete učiniti obveznim korištenjem dodatnog potrebnog argumenta = True.

Na kraju, također možete definirati stenografske verzije argumenta pomoću - (jedna crtica) za smanjenje opširnosti.

uvozargparse

parser =argparse.ArgumentParser(opis='Testni program.')

parser.add_argument(-str, '--print_string', Pomozite='Ispisuje dostavljeni argument.',zadano=DOslučajno niz.)

args= parser.parse_args()

ispisati(args.ispisni niz)

Pokretanje sljedeće naredbe trebalo bi dati isti rezultat kao gore:

$ ./test.py-p LinuxHint.s

Primjer 3: Rukovanje cjelobrojnim argumentom

Za rukovanje argumentima koji zahtijevaju cjelobrojne vrijednosti, morate postaviti ključnu riječ type na int kako biste omogućili provjeru valjanosti i izbacivanje pogrešaka u slučaju da uvjet nije ispunjen.

uvozargparse

parser =argparse.ArgumentParser(opis='Testni program.')

parser.add_argument('-p', '--print_string', Pomozite='Ispisuje dostavljeni argument.', tip=int)

args= parser.parse_args()

ispisati(args.ispisni niz)

Pokušajte pokrenuti sljedeću naredbu:

$ ./test.py-p LinuxHint.s

Trebali biste dobiti ovakvu grešku:

upotreba: test.py [-h] [-p PRINT_STRING]

test.py: pogreška: argument -p/-print_string: neispravna vrijednost int: 'LinuxHint.com'

Navođenjem cijele vrijednosti dobit ćete točan rezultat:

$ ./test.py-str10001000

Primjer 4: Rukovanje točnim i lažnim promjenama

Možete proslijediti argumente bez ikakvih vrijednosti kako biste ih tretirali kao True i False zastavice pomoću argumenta action.

uvozargparse

parser =argparse.ArgumentParser(opis='Testni program.')

parser.add_argument('-p', '--print_string', Pomozite='Ispisuje dostavljeni argument.',akcijski='trgovina_istina')

args= parser.parse_args()

ispisati(args.ispisni niz)

Pokrenite naredbu ispod da biste dobili jednostavno True kao izlaz:

$ ./test.py-str

Ako pokrenete skriptu bez argumenta -p, umjesto toga će se dodijeliti vrijednost False. Vrijednost store_true ključne riječi action dodjeljuje True vrijednost varijabli print_string kad god je -p argument izričito naveden, u protivnom se varijabli dodjeljuje False.

Primjer 5: Vrijednosti argumenata tretirajte kao popis

Ako želite dobiti više vrijednosti odjednom i pohraniti ih na popis, morate unijeti ključnu riječ nargs u sljedećem formatu:

uvozargparse

parser =argparse.ArgumentParser(opis='Testni program.')

parser.add_argument('-p', '--print_string', Pomozite='Ispisuje dostavljeni argument.',pripovijeda='*')

args= parser.parse_args()

ispisati(args.ispisni niz)

Pokrenite sljedeću naredbu da biste testirali gornji kod:

$ ./test.py-p a b

Trebali biste dobiti ovakav ispis:

['a', 'b']

Zaključak

Modul argparse prilično je opsežan s mnoštvom opcija za prilagođavanje ponašanja aplikacija naredbenog retka i raščlanjivanje vrijednosti koje dostavljaju korisnici. Ovi primjeri dotiču se samo osnovne uporabe argparse modula. Za napredne i složene aplikacije možda će vam trebati različite implementacije. Posjetiti službena dokumentacija za potpuno objašnjenje modula.