Python

Kako dodati argumente ukazne vrstice v skript Python

Kako dodati argumente ukazne vrstice v skript Python

Č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 argparse
razč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 argparse
razč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 argparse
razč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.com

Upoš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 argparse
razč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.com

3. 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 argparse
razč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.com

Morali 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 1000

4. 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 argparse
razč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 argparse
razč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.

Najboljših 5 izdelkov z ergonomsko računalniško miško za Linux
Ali dolgotrajna uporaba računalnika povzroča bolečine v zapestju ali prstih? Ali imate trde sklepe in bi se morali neprestano tresti z rokami? Ali čut...
How to Change Mouse and Touchpad Settings Using Xinput in Linux
Most Linux distributions ship with “libinput” library by default to handle input events on a system. It can process input events on both Wayland and X...
S pomočjo gumba X-Mouse Button Control različno prilagodite gumbe miške za različno programsko opremo
Mogoče potrebujete orodje, ki bi lahko spremenilo nadzor miške z vsako aplikacijo, ki jo uporabljate. V tem primeru lahko preizkusite aplikacijo z ime...