Kako dodati argumente ukazne vrstice v skript Python

How Add Command Line Arguments Python Script



Če ste razvili skript ali aplikacijo Python, namenjeno predvsem izvajanju v terminalskih emulatorjih ali celo aplikacijah z grafičnim vmesnikom, lahko dodajanje argumentov ukazne vrstice izboljša njeno uporabnost, berljivost kode, strukturo aplikacije in splošno prijaznost aplikacije do končnih uporabnikov. Ti argumenti ukazne vrstice se imenujejo tudi možnosti ali stikala in delujejo podobno kot argumenti, ki jih običajno vidite v skriptih bash in drugih programih, ki temeljijo na C / C ++.

Za dodajanje argumentov v skripte Python boste morali uporabiti vgrajen modul z imenom argparse. Kot že ime pove, razčlenjuje argumente ukazne vrstice, uporabljene pri zagonu skripta ali aplikacije Python. Te razčlenjene argumente preveri tudi modul argparse, da se prepriča, ali so pravilnega tipa. Napake se pojavijo, če so v argumentih neveljavne vrednosti.







Uporaba modula argparse je najbolje razumeti s primeri. Spodaj je nekaj vzorcev kod, s katerimi boste začeli z modulom argparse.



Primer 1: Ustvarite argument in sporočilo pomoči

Razmislite o spodnjem vzorcu kode:



uvozargparse

razčlenjevalnik =argparse.ArgumentParser(opis='Testni program.')

args= razčlenjevalnik.parse_args()

Prva izjava uvozi modul argparse. Nato se ustvari nov primerek predmeta ArgumentParser in kot argument je naveden kratek opis programa. Objekt ArgumentParser je potreben za pretvorbo vrednosti argumentov ukazne vrstice v podatkovne tipe, ki jih razume Python. To se naredi z metodo parse_args predmeta ArgumentParser, kot je prikazano v zadnjem stavku.





Ob predpostavki, da ste zgoraj navedeni vzorec kode shranili v datoteko z imenom test.py, boste z izvajanjem spodnjih ukazov dobili sporočila pomoči v zvezi s programom.

$ ./preskus.py-h

$ ./preskus.py-pomoč

Morali bi dobiti nekaj podobnega rezultata:



uporaba: test.py [-h]


Testni program.


neobvezni argumenti:

-h, --help prikaži to sporočilo pomoči in zapri

Upoštevajte, da zgoraj omenjenemu vzorcu kode ni bila dodana nobena logika za obravnavo razčlenjenih argumentov in njihovo pretvorbo v objekte. Sporočila pomoči za posamezne argumente zato niso prikazana v izhodu. Ko dodate logiko za ravnanje z vrednostmi razčlenjenih argumentov v programu, bodo sporočila za pomoč začela prikazovati opis posameznih argumentov.

Primer 2: Ravnajte z nizom

Če želite dodati argumente, ki jih sprejme vaš skript python, morate uporabiti metodo add_argument. Oglejte si naslednjo kodo:

uvozargparse

razčlenjevalnik =argparse.ArgumentParser(opis='Testni program.')

razčlenjevalnik.add_argument('print_string', pomoč='Natisne predloženi argument.')

args= razčlenjevalnik.parse_args()

tiskanje(args.print_string)

Dodan je bil nov stavek, ki prikazuje uporabo metode add_argument. Vsak argument, dodan pri zagonu skripta, bo ArgumentParser obravnaval kot objekt print_string.

Upoštevajte, da metoda add_argument privzeto obravnava vrednosti, pridobljene iz argumentov, kot nize, zato vam v tem primeru ni treba izrecno določiti vrste. Dodatnim argumentom je dodeljena tudi privzeta vrednost None, razen če je preglašena.

Še enkrat si oglejte sporočilo za pomoč:

uporaba: test.py [-h] [print_string]


Testni program.


pozicijski argumenti:

print_string Natisne priloženi argument.


neobvezni argumenti:

-h, --help prikaži to sporočilo pomoči in zapri

Ena od vrstic v izpisu pravi pozicijske argumente. Ker ključna beseda za argument ni definirana, se trenutno argument obravnava kot pozicijski argument, kjer vrstni red in položaj podanega argumenta neposredno vplivata na program. Argumenti položaja so tudi obvezni, razen če ročno spremenite njihovo vedenje.

Če želite določiti in razčleniti izbirne argumente, lahko uporabite - (dvojna črtica) in spremenite njihove privzete vrednosti s privzetim argumentom.

uvozargparse

razčlenjevalnik =argparse.ArgumentParser(opis='Testni program.')

razčlenjevalnik.add_argument('--print_string', pomoč='Natisne predloženi argument.',privzeto=TOnaključen vrvica.)

args= razčlenjevalnik.parse_args()

tiskanje(args.print_string)

Ko zaženete skript test.py brez argumentov, bi morali dobiti naključni niz. kot izhod. Po želji lahko uporabite tudi ključno besedo –print_string za tiskanje poljubnega niza.

$ ./preskus.py--print_string LinuxHint.zLinuxHint.com

Upoštevajte, da lahko izbirni argument določite kot obvezen z uporabo dodatnega argumenta required = True.

Nazadnje lahko tudi določite okrajšane različice argumenta z uporabo - (enojna pomišljaj) za zmanjšanje podrobnosti.

uvozargparse

razčlenjevalnik =argparse.ArgumentParser(opis='Testni program.')

razčlenjevalnik.add_argument(-str, '--print_string', pomoč='Natisne predloženi argument.',privzeto=TOnaključen vrvica.)

args= razčlenjevalnik.parse_args()

tiskanje(args.print_string)

Izvajanje naslednjega ukaza bi moralo dati enak rezultat kot zgoraj:

$ ./preskus.py-p LinuxHint.z

Primer 3: Obravnavajte celoštevilčni argument

Če želite obravnavati argumente, ki potrebujejo celoštevilčne vrednosti, morate ključno besedo type nastaviti na int, da omogočite preverjanje in napake, če pogoj ni izpolnjen.

uvozargparse

razčlenjevalnik =argparse.ArgumentParser(opis='Testni program.')

razčlenjevalnik.add_argument('-p', '--print_string', pomoč='Natisne predloženi argument.', tip=int)

args= razčlenjevalnik.parse_args()

tiskanje(args.print_string)

Poskusite zagnati naslednji ukaz:

$ ./preskus.py-p LinuxHint.z

Moral bi dobiti takšno napako:

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

test.py: napaka: argument -p/-print_string: neveljavna vrednost int: 'LinuxHint.com'

Če navedete celoštevilčno vrednost, boste dobili pravilen rezultat:

$ ./preskus.py-str10001000

Primer 4: ravnanje z resničnimi in napačnimi preklopi

Argumente brez vrednosti lahko posredujete in jih z argumentom dejanja obravnavate kot zastavice True in False.

uvozargparse

razčlenjevalnik =argparse.ArgumentParser(opis='Testni program.')

razčlenjevalnik.add_argument('-p', '--print_string', pomoč='Natisne predloženi argument.',dejanje='store_true')

args= razčlenjevalnik.parse_args()

tiskanje(args.print_string)

Zaženite spodnji ukaz, da dobite preprosto True kot izhod:

$ ./preskus.py-str

Če zaženete skript brez argumenta -p, bo namesto tega dodeljena vrednost False. Vrednost store_true ključne besede action dodeli vrednost True spremenljivki print_string, kadar je argument -p izrecno podan, sicer je spremenljivki dodeljena vrednost False.

Primer 5: Vrednosti argumentov obravnavajte kot seznam

Če želite pridobiti več vrednosti hkrati in jih shraniti na seznam, morate ključno besedo nargs navesti v naslednji obliki:

uvozargparse

razčlenjevalnik =argparse.ArgumentParser(opis='Testni program.')

razčlenjevalnik.add_argument('-p', '--print_string', pomoč='Natisne predloženi argument.',pripoveduje='*')

args= razčlenjevalnik.parse_args()

tiskanje(args.print_string)

Za preizkus zgornje kode zaženite naslednji ukaz:

$ ./preskus.py-p a b

Morali bi dobiti nekaj takega rezultata:

['a', 'b']

Zaključek

Modul argparse je precej obsežen s številnimi možnostmi za prilagajanje obnašanja aplikacij ukazne vrstice in razčlenjevanjem vrednosti, ki jih posreduje uporabnik. Ti primeri se dotikajo le osnovne uporabe modula argparse. Za napredne in zapletene aplikacije boste morda potrebovali različne izvedbe. Obiščite uradna dokumentacija za popolno razlago modula.