Python

Komentoriviargumenttien lisääminen Python-komentosarjaan?

Komentoriviargumenttien lisääminen Python-komentosarjaan?
Jos olet kehittänyt Python-komentosarjan tai -sovelluksen, joka on tarkoitettu ensisijaisesti suoritettavaksi pääteemulaattoreissa tai jopa GUI-sovelluksissa, komentoriviargumenttien lisääminen voi parantaa sen käytettävyyttä, koodin luettavuutta, sovelluksen rakennetta ja sovelluksen yleistä käyttäjäystävällisyyttä loppukäyttäjille. Näitä komentoriviargumentteja kutsutaan myös "vaihtoehdoiksi" tai "kytkimiksi" ja ne toimivat samalla tavalla kuin argumentit, jotka yleensä näkyvät bash-skripteissä ja muissa C / C ++ -pohjaisissa ohjelmissa.

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 argparse
jä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 argparse
jä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 argparse
jä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.com
LinuxHint.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 argparse
jä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.com

Esimerkki 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 argparse
jä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.com

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

Esimerkki 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 argparse
jä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 -p

Jos 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 argparse
jä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.

Add Mouse gestures to Windows 10 using these free tools
In recent years computers and operating systems have greatly evolved. There was a time when users had to use commands to navigate through file manager...
Control & manage mouse movement between multiple monitors in Windows 10
Dual Display Mouse Manager lets you control & configure mouse movement between multiple monitors, by slowing down its movements near the border. Windo...
WinMouse lets you customize & improve mouse pointer movement on Windows PC
If you want to improve the default functions of your mouse pointer use freeware WinMouse. It adds more features to help you get the most out of your h...