Če ste razvili skript ali aplikacijo Python, ki je namenjena predvsem zagonu v terminalskih emulatorjih ali celo aplikacijah z grafičnim uporabniškim vmesnikom, lahko dodajanje argumentov ukazne vrstice izboljša njeno uporabnost, berljivost kode, strukturo aplikacije in splošno uporabniško prijaznost aplikacije za končne uporabnike. 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 skriptom Python boste morali uporabiti vgrajeni modul z imenom "argparse". Kot že ime pove, analizira argumente ukazne vrstice, uporabljene med zagonom skripta ali aplikacije Python. Te razčlenjene argumente preveri tudi modul "argparse", da se zagotovi, da so ustreznega "tipa". Napake se pokažejo, če so v argumentih neveljavne vrednosti.
Uporabo modula argparse lahko najbolje razumemo s primeri. Spodaj je nekaj vzorcev kode, s katerimi boste začeli z modulom argparse.
Primer 1: Ustvari argument in sporočilo pomoči
Upoštevajte spodnji vzorec kode:
uvoz argparserazčlenjevalnik = argparse.ArgumentParser (description = 'Preskusni program.')
args = razčlenjevalnik.parse_args ()
Prva izjava uvozi modul "argparse". Nato se ustvari nov primerek predmeta »ArgumentParser« in kot argument se navede kratek opis programa. Objekt ArgumentParser je potreben za pretvorbo vrednosti argumentov ukazne vrstice v podatkovne tipe, ki jih razume Python. To naredi metoda "parse_args" predmeta ArgumentParser, kot je prikazano v zadnji izjavi.
Ob predpostavki, da ste zgoraj navedeni vzorec kode shranili v datoteko z imenom „test.py ”, z zagonom spodnjih ukazov boste dobili sporočila o pomoči, povezana s programom.
$ ./ test.py -h$ ./ test.py --pomoč
Morali bi dobiti nekaj podobnih rezultatov:
uporaba: test.py [-h]Testni program.
neobvezni argumenti:
-h, --help prikaže to sporočilo o pomoči in izstopi
Upoštevajte, da zgoraj omenjenemu vzorcu ni dodana nobena logika za obdelavo razčlenjenih argumentov in njihovo pretvorbo v predmete. Sporočila pomoči za posamezne argumente zato niso prikazana v izhodnih podatkih. Ko v svoj program dodate logiko za obdelavo vrednosti razčlenjenih argumentov, bodo sporočila za pomoč začela prikazovati opis posameznih argumentov.
Primer 2: Obravnava niznega argumenta
Če želite dodati argumente, sprejemljive za vaš skript python, morate uporabiti metodo "add_argument". Oglejte si naslednjo kodo:
uvoz argparserazčlenjevalnik = argparse.ArgumentParser (description = 'Preskusni program.')
razčlenjevalnik.add_argument ("print_string", help = "Natisne priloženi argument.")
args = razčlenjevalnik.parse_args ()
natisni (arg.print_string)
Dodana je nova izjava, ki prikazuje uporabo metode "add_argument". Vsak argument, dodan med zagonom skripta, bo "ArgumentParser" obravnaval kot objekt "print_string".
Upoštevajte, da metoda »add_argument« privzeto vrednosti, pridobljene iz argumentov, obravnava kot nize, zato vam v tem primeru ni treba izrecno določiti »tipa«. Dodanim argumentom je dodeljena tudi privzeta vrednost »Brez«, razen če je ne preglasite.
Š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že to sporočilo o pomoči in izstopi
Ena od vrstic v izhodu pravi "položajni argumenti". Ker nobena ključna beseda za argument ni definirana, se trenutno argument obravnava kot "pozicijski argument", kjer vrstni red in položaj podanega argumenta neposredno vpliva na program. Pozicijski argumenti so prav tako obvezni, razen če ročno spremenite njihovo vedenje.
Če želite določiti in razčleniti neobvezne argumente, lahko uporabite »-« (dvojno pomišljaj) in spremenite njihove privzete vrednosti z uporabo argumenta »privzeto«.
uvoz argparserazčlenjevalnik = argparse.ArgumentParser (description = 'Preskusni program.')
razčlenjevalnik.add_argument ("- print_string", help = "Natisne priloženi argument.", privzeto =" Naključni niz.")
args = razčlenjevalnik.parse_args ()
natisni (arg.print_string)
Zdaj, ko zaženete test.py "brez kakršnega koli argumenta, dobili bi" Naključni niz."Kot izhod. Po želji lahko uporabite tudi ključno besedo "-print_string" za tiskanje poljubnega niza po vaši izbiri.
$ ./ test.py --print_string LinuxHint.com LinuxHint.comUpoštevajte, da lahko neobvezni argument naredite obveznim z uporabo dodatnega argumenta "required = True".
Nazadnje lahko določite tudi stenografske različice argumenta z uporabo "-" (enojna pomišljaj), da zmanjšate podrobnost.
uvoz argparserazčlenjevalnik = argparse.ArgumentParser (description = 'Preskusni program.')
razčlenjevalnik.add_argument (“- p”, "--print_string", help = "Natisne priloženi argument.", privzeto =" Naključni niz.")
args = razčlenjevalnik.parse_args ()
natisni (arg.print_string)
Zagon naslednjega ukaza bi vam dal enak rezultat kot zgoraj:
$ ./ test.py -p LinuxHint.com3. primer: obdelajte celoštevilčni argument
Če želite obravnavati argumente, ki potrebujejo celoštevilske vrednosti, morate ključno besedo "type" nastaviti na "int", da omogočite preverjanje veljavnosti in napake v primeru, da pogoj ni izpolnjen.
uvoz argparserazčlenjevalnik = argparse.ArgumentParser (description = 'Preskusni program.')
razčlenjevalnik.add_argument ("- p", "--print_string", help = "Natisne priloženi argument.", vnesite = int)
args = razčlenjevalnik.parse_args ()
natisni (arg.print_string)
Poskusite zagnati naslednji ukaz:
$ ./ test.py -p LinuxHint.comMorali bi dobiti takšno napako:
uporaba: test.py [-h] [-p PRINT_STRING]preskus.py: napaka: argument -p / - print_string: neveljavna vrednost int: 'LinuxHint.com '
Če navedete celoštevilčno vrednost, boste dobili pravilen rezultat:
$ ./ test.py -p 1000 10004. primer: ravnajte s pravilnimi in napačnimi preklopi
Argumente lahko posredujete brez kakršnih koli vrednosti, da jih z argumentom »action« obravnavate kot zastavi True in False.
uvoz argparserazčlenjevalnik = argparse.ArgumentParser (description = 'Preskusni program.')
razčlenjevalnik.add_argument ("- p", "--print_string", help = "Natisne priloženi argument.", action =" store_true ")
args = razčlenjevalnik.parse_args ()
natisni (arg.print_string)
Zaženite spodnji ukaz, če želite kot izhod dobiti preprosto »True«:
$ ./ test.py -pČe skript zaženete brez argumenta “-p”, bo namesto njega dodeljena vrednost “False”. Vrednost "store_true" ključne besede "action" spremenljivki "print_string" dodeli vrednost "True", kadar je izrecno naveden argument "-p", sicer pa je spremenljivki dodeljena False.
Primer 5: Vrednosti argumenta obravnavaj kot seznam
Če želite naenkrat dobiti več vrednosti in jih shraniti na seznam, morate navesti ključno besedo »nargs« v naslednji obliki:
uvoz argparserazčlenjevalnik = argparse.ArgumentParser (description = 'Preskusni program.')
razčlenjevalnik.add_argument ("- p", "--print_string", help = "Natisne priloženi argument.", nargs = '*')
args = razčlenjevalnik.parse_args ()
natisni (arg.print_string)
Zaženite naslednji ukaz, da preizkusite zgornjo kodo:
$ ./ test.py -p "a" "b"Morali bi dobiti nekaj takšnih rezultatov:
['a', 'b']Zaključek
Modul "argparse" je precej izčrpen s številnimi možnostmi za prilagoditev vedenja aplikacij ukazne vrstice in razčlenitev uporabniških vrednosti. Ti primeri se dotikajo samo osnovne uporabe modula "argparse". Za napredne in zapletene aplikacije boste morda potrebovali različne izvedbe. Za popolno razlago modula obiščite uradno dokumentacijo.