Č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:
uvozargparserazč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.
uvozargparserazč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.comUpoš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.
uvozargparserazč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.zPrimer 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.
uvozargparserazč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.zMoral 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-str10001000Primer 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.
uvozargparserazč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:
uvozargparserazč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 bMorali 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.