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 naj bi se v glavnem izvajala v terminalskih emulatorjih ali celo aplikacijah GUI, lahko dodajanje argumentov ukazne vrstice izboljša njeno uporabnost, berljivost kode, strukturo aplikacije in splošno prijaznost aplikacije končni uporabniki. 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 ++.

Če želite skriptom Python dodati argumente, 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 navedeno vzorčno kodo shranili v datoteko z imenom „test.py ”, s pomočjo spodnjih ukazov boste dobili pomoč pri sporočilih, povezanih s programom.

$ ./ test.py -h
$ ./ test.py --pomoč

Morali bi dobiti nekaj podobnih rezultatov:

uporaba: test.py [-h]
Neobvezni argumenti testnega programa:
-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 opise 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)

Dodan je nov stavek, 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]
Pozicijski argumenti testnega programa:
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".

Na koncu lahko določite tudi stenografske različice argumenta z uporabo "-" (en 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)

Če zaženete naslednji ukaz, bi morali dobiti 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 pravi 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 prilagajanje vedenja aplikacij ukazne vrstice in razčlenjevanjem 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še laboratorijske igre Oculus App
Če ste lastnik slušalk Oculus, morate biti seznanjeni s stranskim nalaganjem. Sideloading je postopek namestitve vsebine, ki ni shranjena v slušalke. ...
10 najboljših iger za igranje v Ubuntuju
Platforma Windows je bila ena izmed prevladujočih platform za igre na srečo zaradi velikega odstotka iger, ki se danes razvijajo za naravno podporo si...
5 najboljših arkadnih iger za Linux
Dandanes so računalniki resni stroji, ki se uporabljajo za igre na srečo. Če ne boste mogli dobiti novega visokega rezultata, boste vedeli, kaj mislim...