Komentoriviargumenttien lisääminen Python -komentosarjaan

How Add Command Line Arguments Python Script



Jos olet kehittänyt Python -komentosarjan tai -sovelluksen, joka on tarkoitettu käytettäväksi ensisijaisesti pääteemulaattoreissa tai jopa GUI -sovelluksissa, komentoriviargumenttien lisääminen voi parantaa sen käytettävyyttä, koodin luettavuutta, sovellusrakennetta ja sovelluksen yleistä käyttäjäystävällisyyttä loppukäyttäjille. Näitä komentoriviargumenteja kutsutaan myös vaihtoehdoiksi tai kytkimiksi ja ne toimivat samalla tavalla kuin argumentit, joita tavallisesti näet bash -komentosarjoissa ja muissa C / C ++ -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ää Python -komentosarjan tai -sovelluksen käynnistämisen yhteydessä käytetyt komentoriviargumentit. Näitä jäsennettyjä argumentteja tarkistaa myös argparse -moduuli varmistaakseen, että ne ovat oikean tyyppisiä. Virheitä syntyy, jos argumentteissa on virheellisiä arvoja.







Argparse -moduulin käyttö voidaan parhaiten ymmärtää esimerkkien avulla. Alla on joitain koodinäytteitä, joiden avulla pääset alkuun argparse -moduulin kanssa.



Esimerkki 1: Luo ohjeväite ja viesti

Harkitse alla olevaa koodinäytettä:



tuontiargparse

jäsentäjä =argparse.ArgumenttiParser(kuvaus='Testiohjelma.')

args= jäsentäjä.parse_args()

Ensimmäinen lausunto tuo argparse -moduulin. Seuraavaksi luodaan uusi ArgumentParser -objektin esiintymä ja annetaan ohjelman lyhyt kuvaus argumenttina. ArgumentParser -objektia tarvitaan komentoriviargumenttien muuntamiseen Pythonin ymmärtämiin tietotyyppeihin. Tämä tehdään ArgumentParser -objektin parse_args -menetelmällä, kuten viimeisessä lauseessa on esitetty.





Olettaen, että olet tallentanut yllä mainitun koodinäytteen tiedostoon nimeltä test.py, suorittamalla alla olevat komennot saat ohjelmaan liittyviä ohjeviestejä.

$ ./testata.py-h

$ ./testata.py-auta

Sinun pitäisi saada jotain tämänkaltaista lähtöä:



käyttö: test.py [-h]


Testiohjelma.


valinnaiset argumentit:

-oh, -auta näyttämään tämä ohjeviesti ja poistumaan

Huomaa, että yllä mainittuun koodinäytteeseen ei ole lisätty logiikkaa jäsennettyjen argumenttien käsittelemiseksi ja niiden muuntamiseksi objekteiksi. Näin ollen yksittäisten argumenttien ohjeviestit eivät näy tulostuksessa. Kun olet lisännyt logiikan jäsennettyjen argumenttien arvojen käsittelyyn ohjelmassasi, ohjeviestit alkavat näyttää yksittäisten argumenttien kuvauksia.

Esimerkki 2: Käsittele merkkijono -argumenttia

Jos haluat lisätä argumentteja, jotka python -skriptisi hyväksyy, sinun on käytettävä add_argument -menetelmää. Katso seuraava koodi:

tuontiargparse

jäsentäjä =argparse.ArgumenttiParser(kuvaus='Testiohjelma.')

jäsentäjä.add_argument('print_string', auta='Tulostaa annetun argumentin.')

args= jäsentäjä.parse_args()

Tulosta(args.print_string)

Lisätty uusi lausunto, joka osoittaa add_argument -menetelmän käytön. ArgumentParser käsittelee komentosarjaa käynnistettäessä lisättyjä argumentteja print_string -objektina.

Huomaa, että add_argument -menetelmä käsittelee oletusarvoisesti argumentteista haetut arvot merkkijonoina, joten sinun ei tarvitse erikseen määrittää tyyppiä tässä tapauksessa. Myös lisäargumenteille määritetään oletusarvo Ei mitään, ellei niitä ohiteta.

Katso vielä kerran ohjetta:

käyttö: test.py [-h] [print_string]


Testiohjelma.


kantaperusteet:

print_string Tulostaa annetun argumentin.


valinnaiset argumentit:

-oh, -auta näyttämään tämä ohjeviesti ja poistumaan

Yksi tulosten riveistä kertoo sijaintiargumentit. Koska argumentille ei ole määritelty avainsanaa, argumenttia käsitellään tällä hetkellä positioargumenttina, jossa annetun argumentin järjestyksellä ja sijainnilla on suora vaikutus ohjelmaan. Paikkatiedot ovat myös pakollisia, ellet muuta manuaalisesti niiden käyttäytymistä.

Voit määrittää ja jäsentää valinnaisia ​​argumentteja käyttämällä - (kaksoisviiva) ja muuttaa niiden oletusarvoja oletusargumentin avulla.

tuontiargparse

jäsentäjä =argparse.ArgumenttiParser(kuvaus='Testiohjelma.')

jäsentäjä.add_argument('--print_string', auta='Tulostaa annetun argumentin.',oletusarvo=TOsatunnaisesti merkkijono.)

args= jäsentäjä.parse_args()

Tulosta(args.print_string)

Kun suoritat test.py -komentosarjan ilman argumentteja, sinun pitäisi saada satunnainen merkkijono. tuotoksena. Voit myös halutessasi käyttää -print_string -avainsanaa minkä tahansa valitsemasi merkkijonon tulostamiseen.

$ ./testata.py--print_string LinuxHint.kanssaLinuxHint.com

Huomaa, että voit tehdä valinnaisen argumentin pakolliseksi käyttämällä ylimääräistä pakollista = True -argumenttia.

Lopuksi voit myös määritellä argumentin lyhytversiot käyttämällä - (yksi viiva) monisanaisuuden vähentämiseksi.

tuontiargparse

jäsentäjä =argparse.ArgumenttiParser(kuvaus='Testiohjelma.')

jäsentäjä.add_argument(-p, '--print_string', auta='Tulostaa annetun argumentin.',oletusarvo=TOsatunnaisesti merkkijono.)

args= jäsentäjä.parse_args()

Tulosta(args.print_string)

Seuraavan komennon suorittamisen pitäisi antaa sinulle sama tulos kuin yllä:

$ ./testata.py-p LinuxHint.kanssa

Esimerkki 3: Käsittele kokonaislukuväitettä

Jotta voit käsitellä kokonaislukuarvoja tarvitsevia argumentteja, sinun on määritettävä tyypin avainsanaksi int, jotta se voi vahvistaa ja heittää virheitä, jos ehto ei täyty.

tuontiargparse

jäsentäjä =argparse.ArgumenttiParser(kuvaus='Testiohjelma.')

jäsentäjä.add_argument('' p '', '--print_string', auta='Tulostaa annetun argumentin.', tyyppi=int)

args= jäsentäjä.parse_args()

Tulosta(args.print_string)

Kokeile suorittaa seuraava komento:

$ ./testata.py-p LinuxHint.kanssa

Sinun pitäisi saada seuraavanlainen virhe:

käyttö: test.py [-h] [-p PRINT_STRING]

test.py: error: argument -p/-print_string: invalid int value: 'LinuxHint.com'

Jos annat kokonaislukuarvon, saat oikean tuloksen:

$ ./testata.py-p10001000

Esimerkki 4: Käsittele oikeita ja vääriä vaihtokytkimiä

Voit välittää argumentteja ilman arvoja, jotta voit käsitellä niitä tosi- ja vääriä lippuja käyttämällä toimintaargumenttia.

tuontiargparse

jäsentäjä =argparse.ArgumenttiParser(kuvaus='Testiohjelma.')

jäsentäjä.add_argument('' p '', '--print_string', auta='Tulostaa annetun argumentin.',toiminta='store_true')

args= jäsentäjä.parse_args()

Tulosta(args.print_string)

Suorita alla oleva komento saadaksesi yksinkertaisen True -tuloksen:

$ ./testata.py-p

Jos suoritat komentosarjan ilman -p -argumenttia, sille annetaan Väärä arvo. Toiminta -avainsanan arvo store_true antaa print_string -muuttujalle True -arvon aina, kun -p -argumentti on nimenomaisesti määritetty, muuten muuttujalle annetaan False.

Esimerkki 5: Käsittele argumenttiarvot luettelona

Jos haluat saada useita arvoja kerralla ja tallentaa ne luetteloon, sinun on annettava nargs -avainsana seuraavassa muodossa:

tuontiargparse

jäsentäjä =argparse.ArgumenttiParser(kuvaus='Testiohjelma.')

jäsentäjä.add_argument('' p '', '--print_string', auta='Tulostaa annetun argumentin.',nargs='*')

args= jäsentäjä.parse_args()

Tulosta(args.print_string)

Testaa yllä oleva koodi suorittamalla seuraava komento:

$ ./testata.py-p a b

Sinun pitäisi saada jonkinlainen tulos seuraavalla tavalla:

['a', 'b']

Johtopäätös

Argparse -moduuli on melko kattava, ja siinä on paljon vaihtoehtoja komentorivisovellusten käyttäytymisen ja käyttäjän toimittamien arvojen jäsentämiseksi. Nämä esimerkit koskevat vain argparse -moduulin peruskäyttöä. Edistyneissä ja monimutkaisissa sovelluksissa saatat tarvita erilaisia ​​toteutuksia. Vieraile virallista dokumentaatiota saadaksesi täydellisen selityksen moduulista.