Kaip pridėti komandų eilutės argumentus prie „Python“ scenarijaus

How Add Command Line Arguments Python Script



Jei sukūrėte „Python“ scenarijų ar programą, skirtą pirmiausia paleisti terminalo emuliatoriuose ar net GUI programose, pridėję komandinės eilutės argumentų galite pagerinti jos naudojimą, kodo įskaitomumą, programos struktūrą ir bendrą programos patogumą galutiniams vartotojams. Šie komandinės eilutės argumentai taip pat vadinami parinktimis arba jungikliais ir veikia panašiai kaip argumentai, kuriuos paprastai matote „bash“ scenarijuose ir kitose C / C ++ programose.

Norėdami pridėti argumentų prie „Python“ scenarijų, turėsite naudoti integruotą modulį, pavadintą argparse. Kaip rodo pavadinimas, jis analizuoja komandinės eilutės argumentus, naudojamus paleidžiant „Python“ scenarijų ar programą. Šiuos analizuojamus argumentus taip pat tikrina „argparse“ modulis, kad įsitikintų, jog jie yra tinkamo tipo. Klaidos kyla, jei argumentuose yra neteisingų verčių.







„Argparse“ modulio naudojimą geriausiai galima suprasti naudojant pavyzdžius. Žemiau yra keletas kodo pavyzdžių, kurie padės jums pradėti naudotis argparse moduliu.



1 pavyzdys: sugeneruokite pagalbos argumentą ir pranešimą

Apsvarstykite toliau pateiktą kodo pavyzdį:



importasargparse

analizatorius =argparse.ArgumentParser(apibūdinimas=„Bandymo programa“.)

args= analizatorius.parse_args()

Pirmasis teiginys importuoja argparse modulį. Tada sukuriamas naujas „ArgumentParser“ objekto egzempliorius ir kaip argumentas pateikiamas trumpas programos aprašymas. ArgumentParser objektas reikalingas komandų eilutės argumentų reikšmėms konvertuoti į duomenų tipus, kuriuos supranta Python. Tai daroma naudojant „ArgumentParser“ objekto metodą „parse_args“, kaip parodyta paskutiniame teiginyje.





Darant prielaidą, kad išsaugojote aukščiau nurodytą kodo pavyzdį faile, pavadintame test.py, vykdydami toliau pateiktas komandas gausite pagalbos pranešimus, susijusius su programa.

$ ./testas.py-h

$ ./testas.py-padėti

Turėtumėte gauti panašų rezultatą:



naudojimas: test.py [-h]


Bandomoji programa.


neprivalomi argumentai:

-h, --padėk parodyti šį pagalbos pranešimą ir išeiti

Atminkite, kad į minėtą kodo pavyzdį nebuvo pridėta jokios logikos, kaip tvarkyti analizuojamus argumentus ir konvertuoti juos į objektus. Taigi pagalbos pranešimai atskiriems argumentams nerodomi išvestyje. Kai programoje pridėsite analizuojamų argumentų verčių tvarkymo logiką, pagalbos pranešimuose bus rodomas atskirų argumentų aprašymas.

2 pavyzdys: tvarkykite eilutės argumentą

Norėdami pridėti argumentų, priimtinų jūsų „python“ scenarijui, turite naudoti metodą add_argument. Pažvelkite į šį kodą:

importasargparse

analizatorius =argparse.ArgumentParser(apibūdinimas=„Bandymo programa“.)

analizatorius.add_argument('print_string', padėti=„Spausdina pateiktą argumentą“.)

args= analizatorius.parse_args()

spausdinti(args.print_string)

Pridėtas naujas teiginys, rodantis metodo add_argument naudojimą. Bet koks argumentas, pridėtas paleidžiant scenarijų, bus laikomas „ArgumentParser“ objektu print_string.

Atminkite, kad pagal numatytuosius nustatymus metodas „add_argument“ vertes, gautas iš argumentų, laiko eilutėmis, todėl šiuo atveju nereikia aiškiai nurodyti tipo. Pridėtiems argumentams taip pat priskiriama numatytoji reikšmė Nėra, jei nepaisoma.

Dar kartą pažiūrėkite į pagalbos pranešimą:

naudojimas: test.py [-h] [print_string]


Bandomoji programa.


poziciniai argumentai:

print_string Spausdina pateiktą argumentą.


neprivalomi argumentai:

-h, --padėk parodyti šį pagalbos pranešimą ir išeiti

Viena iš išvesties eilučių sako pozicinius argumentus. Kadangi neapibrėžiamas nė vienas argumento raktinis žodis, šiuo metu argumentas laikomas poziciniu argumentu, kai pateikto argumento tvarka ir padėtis turi tiesioginį poveikį programai. Poziciniai argumentai taip pat yra privalomi, nebent rankiniu būdu pakeisite jų elgesį.

Norėdami apibrėžti ir išanalizuoti neprivalomus argumentus, galite naudoti - (dvigubas brūkšnys) ir pakeisti numatytas reikšmes naudodami numatytąjį argumentą.

importasargparse

analizatorius =argparse.ArgumentParser(apibūdinimas=„Bandymo programa“.)

analizatorius.add_argument('--print_string', padėti=„Spausdina pateiktą argumentą“.,numatytas=Įatsitiktinis eilutė.)

args= analizatorius.parse_args()

spausdinti(args.print_string)

Dabar, kai paleisite scenarijų test.py be jokių argumentų, turėtumėte gauti atsitiktinę eilutę. kaip produkcija. Taip pat pasirinktinai galite naudoti raktinį žodį –print_string, kad išspausdintumėte bet kurią pasirinktą eilutę.

$ ./testas.py--print_string LinuxHint.suLinuxHint.com

Atminkite, kad pasirenkamą argumentą galite padaryti privalomą naudodami papildomą privalomą = teisingą argumentą.

Galiausiai taip pat galite apibrėžti trumpas argumento versijas naudodami - (vieną brūkšnelį), kad sumažintumėte daugiakalbiškumą.

importasargparse

analizatorius =argparse.ArgumentParser(apibūdinimas=„Bandymo programa“.)

analizatorius.add_argument(-p, '--print_string', padėti=„Spausdina pateiktą argumentą“.,numatytas=Įatsitiktinis eilutė.)

args= analizatorius.parse_args()

spausdinti(args.print_string)

Vykdydami šią komandą turėtumėte gauti tą patį rezultatą kaip aukščiau:

$ ./testas.py-p LinuxHint.su

3 pavyzdys: tvarkykite sveiko skaičiaus argumentą

Norėdami tvarkyti argumentus, kuriems reikia sveikųjų skaičių reikšmių, turite nustatyti tipo raktinį žodį int, kad būtų galima patvirtinti ir išmesti klaidas, jei sąlyga nebus įvykdyta.

importasargparse

analizatorius =argparse.ArgumentParser(apibūdinimas=„Bandymo programa“.)

analizatorius.add_argument('-p', '--print_string', padėti=„Spausdina pateiktą argumentą“., tipo=tarpt)

args= analizatorius.parse_args()

spausdinti(args.print_string)

Pabandykite paleisti šią komandą:

$ ./testas.py-p LinuxHint.su

Turėtumėte gauti tokią klaidą:

naudojimas: test.py [-h] [-p PRINT_STRING]

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

Pateikę sveiką skaičių, gausite teisingą rezultatą:

$ ./testas.py-p10001000

4 pavyzdys: tvarkykite teisingus ir klaidingus perjungimus

Naudodami veiksmo argumentą, galite perduoti argumentus be jokių verčių, kad jie būtų traktuojami kaip teisingos ir klaidingos vėliavos.

importasargparse

analizatorius =argparse.ArgumentParser(apibūdinimas=„Bandymo programa“.)

analizatorius.add_argument('-p', '--print_string', padėti=„Spausdina pateiktą argumentą“.,veiksmas=„store_true“)

args= analizatorius.parse_args()

spausdinti(args.print_string)

Vykdykite toliau pateiktą komandą, kad gautumėte paprastą „True“ kaip išvestį:

$ ./testas.py-p

Jei vykdysite scenarijų be argumento -p, vietoj jo bus priskirta klaidinga reikšmė. Veiksmo raktinio žodžio vertė store_true priskiria kintamajam print_string tikrąją reikšmę, kai -p argumentas yra aiškiai nurodytas, kitaip kintamajam priskiriama False.

5 pavyzdys. Argumentų vertes laikykite sąrašu

Jei norite gauti kelias vertes vienu metu ir išsaugoti jas sąraše, turite pateikti raktinį žodį nargs tokiu formatu:

importasargparse

analizatorius =argparse.ArgumentParser(apibūdinimas=„Bandymo programa“.)

analizatorius.add_argument('-p', '--print_string', padėti=„Spausdina pateiktą argumentą“.,nargs='*')

args= analizatorius.parse_args()

spausdinti(args.print_string)

Norėdami išbandyti aukščiau esantį kodą, paleiskite šią komandą:

$ ./testas.py-p a b

Turėtumėte gauti tokią išvestį:

['a', 'b']

Išvada

„Argparse“ modulis yra gana išsamus, turintis daugybę galimybių keisti komandinės eilutės programų elgesį ir išanalizuoti vartotojo pateiktas vertes. Šie pavyzdžiai liečia tik pagrindinį argparse modulio naudojimą. Pažangioms ir sudėtingoms programoms gali prireikti skirtingų diegimų. Aplankykite oficiali dokumentacija Norėdami išsamiai paaiškinti modulį.