Jos haluat lisätä argumentteja Python-komentosarjoihin, sinun on käytettävä sisäänrakennettua moduulia nimeltä "Argparse". Kuten nimestä voi päätellä, se jäsentää komentoriviargumentit, joita käytettiin käynnistettäessä Python-komentosarja tai -sovellus. Argparse-moduuli tarkistaa myös nämä jäsennetyt argumentit varmistaakseen, että ne ovat oikean tyyppisiä. Virheitä esiintyy, jos argumenteissa on virheellisiä arvoja.
Argparse-moduulin käyttö voidaan ymmärtää parhaiten esimerkkien avulla. Alla on joitain koodinäytteitä, joiden avulla pääset alkuun argparse-moduulilla.
Esimerkki 1: Luo argumentti ja viesti
Harkitse alla olevaa koodinäytettä:
tuoda argparsejäsennin = argparse.ArgumentParser (description = 'Testiohjelma.')
args = jäsennin.parse_args ()
Ensimmäinen lause tuo "argparse" -moduulin. Seuraavaksi luodaan uusi "ArgumentParser" -objekti ja esiintyy lyhyt kuvaus ohjelmasta argumenttina. ArgumentParser-objektia tarvitaan komentoriviargumenttiarvojen muuntamiseen Pythonin ymmärtämiksi tietotyypeiksi. Tämä tapahtuu ArgumentParser-objektin "parse_args" -menetelmällä, kuten viimeinen käsky osoittaa.
Olettaen, että olet tallentanut yllä mainitun mallikoodin tiedostoon nimeltä testi.py ”, suorittamalla alla olevat komennot pääset auttamaan ohjelmaa koskevia viestejä.
$ ./testata.py-h$ ./testata.py --apua
Sinun pitäisi saada samanlainen tuotos kuin tämä:
käyttö: testi.py [-h]Testiohjelman valinnaiset argumentit:
-h, --help näytä tämä ohjeviesti ja poistu
Huomaa, että mitään logiikkaa jäsennettyjen argumenttien käsittelemiseksi ja niiden muuntamiseksi objekteiksi ei ole lisätty yllä mainittuun koodinäytteeseen. Näin ollen yksittäisten argumenttien ohjeviestejä ei näytetä tulosteessa. Kun olet lisännyt logiikan jäsenneltyjen argumenttien arvojen käsittelyyn ohjelmassa, ohjeviestit alkavat näyttää yksittäisten argumenttien kuvauksia.
Esimerkki 2: Käsittele merkkijono-argumenttia
Python-komentosarjassa hyväksyttävien argumenttien lisäämiseksi sinun on käytettävä ”add_argument” -menetelmää. Katso seuraava koodi:
tuoda argparsejäsennin = argparse.ArgumentParser (description = 'Testiohjelma.')
jäsennin.add_argument ("print_string", help = "Tulostaa toimitetun argumentin.")
args = jäsennin.parse_args ()
tulosta (arg.print_string)
Uusi lauseke on lisätty, joka osoittaa "add_argument" -menetelmän käytön. Kaikkia argumentteja, jotka on lisätty komentosarjan käynnistämisen yhteydessä, ArgumentParser käsittelee “print_string” -objektina.
Huomaa, että oletusarvoisesti add_argument-menetelmä käsittelee argumenteista haettuja arvoja merkkijonoina, joten sinun ei tarvitse erikseen määrittää tyyppiä tässä tapauksessa. Oletusarvo ”Ei mitään” määritetään myös lisätyille argumenteille, ellei niitä ohiteta.
Katso vielä kerran ohjeviesti:
käyttö: testi.py [-h] [print_string]Testiohjelman sijainti-argumentit:
print_string tulostaa toimitetun argumentin
valinnaiset argumentit:
-h, --help näytä tämä ohjeviesti ja poistu
Yksi ulostulon riveistä sanoo "sijainti-argumentit". Koska argumentille ei ole määritelty avainsanaa, argumenttia käsitellään tällä hetkellä "sijaintiargumenttina", jossa toimitetun argumentin järjestys ja sijainti vaikuttavat suoraan ohjelmaan. Sijoitusargumentit ovat myös pakollisia, ellet muuta heidän käyttäytymistään manuaalisesti.
Voit määrittää ja jäsentää valinnaiset argumentit käyttämällä "-" (kaksoisviiva) ja muuttaa niiden oletusarvot "oletus" -argumentilla.
tuoda argparsejäsennin = argparse.ArgumentParser (description = 'Testiohjelma.')
jäsennin.add_argument ("- print_string", help = "Tulostaa toimitetun argumentin.", default =" Satunnainen merkkijono.”)
args = jäsennin.parse_args ()
tulosta (arg.print_string)
Nyt kun suoritat testin.py ”-komentosarja ilman argumentteja, sinun pitäisi saada” Satunnainen merkkijono.”Tuotoksena. Voit myös halutessasi käyttää minkä tahansa merkkijonon "-print_string" -hakusanalla.
$ ./testata.py --print_string LinuxHint.comLinuxHint.com
Huomaa, että voit tehdä valinnaisesta argumentista pakollisen käyttämällä ylimääräistä “required = True” -argumenttia.
Lopuksi voit myös määrittää argumentin lyhytversiot käyttämällä "-" (yksi viiva) vähentämään sanatarkkuutta.
tuoda argparsejäsennin = argparse.ArgumentParser (description = 'Testiohjelma.')
jäsennin.add_argument (“- p”, "--print_string", help = "Tulostaa toimitetun argumentin.", default =" Satunnainen merkkijono.”)
args = jäsennin.parse_args ()
tulosta (arg.print_string)
Seuraavan komennon suorittamisen pitäisi antaa sama tulos kuin yllä:
$ ./testata.py -p LinuxHint.comEsimerkki 3: Käsittele kokonaislukua
Jos haluat käsitellä argumentteja, jotka tarvitsevat kokonaislukuarvoja, sinun on asetettava "type" -avainsanaksi "int", jotta validointi ja heittovirheet mahdollistavat, jos ehto ei täyty.
tuoda argparsejäsennin = argparse.ArgumentParser (description = 'Testiohjelma.')
jäsennin.add_argument ("- p", "--print_string", help = "Tulostaa toimitetun argumentin.", kirjoita = int)
args = jäsennin.parse_args ()
tulosta (arg.print_string)
Yritä suorittaa seuraava komento:
$ ./testata.py -p LinuxHint.comSinun pitäisi saada tällainen virhe:
käyttö: testi.py [-h] [-p PRINT_STRING]testata.py: virhe: argumentti -p / - print_string: virheellinen int-arvo: 'LinuxHint.com '
Kokonaisluvun antaminen antaa oikean tuloksen:
$ ./testata.py-1000 1000Esimerkki 4: Käsittele oikeat ja väärät valitsimet
Voit välittää argumentteja ilman arvoja käsitelläksesi niitä tosi ja väärä lipuina käyttämällä toiminto-argumenttia.
tuoda argparsejäsennin = argparse.ArgumentParser (description = 'Testiohjelma.')
jäsennin.add_argument ("- p", "--print_string", help = "Tulostaa toimitetun argumentin.", action =" store_true ")
args = jäsennin.parse_args ()
tulosta (arg.print_string)
Suorita alla oleva komento saadaksesi yksinkertaisen True-arvon:
$ ./testata.py -pJos suoritat komentosarjan ilman ”-p” -argumenttia, sen sijaan määritetään ”False” -arvo. "Action" -avainsanan arvo "store_true" antaa "True" -arvon muuttujalle "print_string" aina, kun "-p"-argumentti on nimenomaisesti määritelty, muuten muuttujalle määritetään False.
Esimerkki 5: Käsittele argumenttiarvot luettelona
Jos haluat saada useita arvoja kerralla ja tallentaa ne luetteloon, sinun on annettava nargs-avainsana seuraavassa muodossa:
tuoda argparsejäsennin = argparse.ArgumentParser (description = 'Testiohjelma.')
jäsennin.add_argument ("- p", "--print_string", help = "Tulostaa toimitetun argumentin.", nargs = '*')
args = jäsennin.parse_args ()
tulosta (arg.print_string)
Testaa yllä oleva koodi suorittamalla seuraava komento:
$ ./testata.py -p “a” “b”Sinun pitäisi saada tällainen tulos:
['a', 'b']Johtopäätös
Argparse-moduuli on melko kattava, ja siinä on runsaasti vaihtoehtoja komentorivisovellusten käyttäytymisen säätämiseen ja käyttäjän toimittamien arvojen jäsentämiseen. Nämä esimerkit koskevat vain argparse-moduulin peruskäyttöä. Edistyneisiin ja monimutkaisiin sovelluksiin saatat tarvita erilaisia toteutuksia. Vieraile virallisissa asiakirjoissa saadaksesi täydellisen selvityksen moduulista.