Kuidas lisada käsurea argumente Pythoni skripti

How Add Command Line Arguments Python Script



Kui olete välja töötanud Pythoni skripti või rakenduse, mis on mõeldud kasutamiseks peamiselt terminaliemulaatorites või isegi GUI -rakendustes, võib käsurea argumentide lisamine parandada selle kasutatavust, koodi loetavust, rakenduse struktuuri ja lõppkasutajate jaoks rakenduse üldist kasutajasõbralikkust. Neid käsurea argumente nimetatakse ka valikuteks või lülititeks ja need toimivad sarnaselt argumentidega, mida tavaliselt näete bash -skriptides ja muudes C / C ++ programmides.

Pythoni skriptidele argumentide lisamiseks peate kasutama sisseehitatud moodulit nimega argparse. Nagu nimigi ütleb, parsib see käsurea argumente, mida kasutati Pythoni skripti või rakenduse käivitamisel. Neid analüüsitud argumente kontrollib ka argparse moodul, et tagada nende õige tüüp. Vead tekivad, kui argumentides on kehtetuid väärtusi.







Argvarse mooduli kasutamist saab kõige paremini mõista näidete kaudu. Allpool on mõned koodinäited, mis aitavad teil argparse mooduliga alustada.



Näide 1: looge abiargument ja sõnum

Mõelge allolevale koodinäidisele:



importargparse

parser =argparse.ArgumentParser(kirjeldus='Testprogramm.')

args= parser.parse_args()

Esimene avaldus impordib argparse mooduli. Järgmisena luuakse ArgumentParseri objekti uus eksemplar ja argumendina esitatakse programmi lühikirjeldus. Objekti ArgumentParser on vaja käsurea argumentide väärtuste teisendamiseks andmetüüpideks, millest Python aru saab. Seda tehakse objekti ArgumentParser meetodiga parse_args, nagu on näidatud viimases lauses.





Eeldades, et olete ülaltoodud koodinäidise salvestanud faili test.py, saate allolevate käskude käivitamisel programmiga seotud abisõnumeid.

$ ./test.py-h

$ ./test.py-abi

Peaksite saama sarnase väljundi:



kasutamine: test.py [-h]


Testprogramm.


valikulised argumendid:

-h, -aitab näidata seda abisõnumit ja väljuda

Pange tähele, et ülaltoodud koodinäidisele pole lisatud loogikat sõelutud argumentide käsitlemiseks ja objektideks teisendamiseks. Seetõttu ei kuvata väljundis abisõnumeid üksikute argumentide jaoks. Kui olete loogika lisanud oma programmis parsitud argumentide väärtuste käsitlemiseks, hakkavad abisõnumid näitama üksikute argumentide kirjeldust.

Näide 2: käsitsege stringiargumenti

Python -skriptiga vastuvõetavate argumentide lisamiseks peate kasutama meetodit add_argument. Vaadake järgmist koodi:

importargparse

parser =argparse.ArgumentParser(kirjeldus='Testprogramm.')

parser.lisa_argument('print_string', abi='Prindib esitatud argumendi.')

args= parser.parse_args()

printida(args.print_string)

Lisatud on uus avaldus, mis näitab meetodi add_argument kasutamist. ArgumentParser käsitleb kõiki skripti käivitamisel lisatud argumente print_string objektina.

Pange tähele, et vaikimisi käsitleb meetod add_argument argumentidest saadud väärtusi stringidena, nii et te ei pea sel juhul selgesõnaliselt tüüpi määrama. Lisatud argumentidele määratakse ka vaikeväärtus Puudub, kui neid ei tühistata.

Vaadake veel kord abisõnumit:

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


Testprogramm.


positsioonilised argumendid:

print_string Prindib esitatud argumendi.


valikulised argumendid:

-h, -aitab näidata seda abisõnumit ja väljuda

Väljundi üks rida ütleb positsioonilisi argumente. Kuna argumendi märksõna pole määratletud, käsitletakse seda argumenti positsioonilise argumendina, kus esitatud argumendi järjekorral ja positsioonil on programmile otsene mõju. Positsioonilised argumendid on samuti kohustuslikud, kui te nende käitumist käsitsi ei muuda.

Valikuliste argumentide määratlemiseks ja analüüsimiseks võite kasutada - (topeltkriips) ja muuta nende vaikeväärtusi, kasutades vaikeargumenti.

importargparse

parser =argparse.ArgumentParser(kirjeldus='Testprogramm.')

parser.lisa_argument('--print_string', abi='Prindib esitatud argumendi.',vaikimisi=TOjuhuslik string.)

args= parser.parse_args()

printida(args.print_string)

Kui käivitate test.py skripti ilma argumentideta, peaksite saama juhusliku stringi. väljundina. Valikuliselt saate kasutada ka valitud printimisstringi printimiseks märksõna –print_string.

$ ./test.py--print_string LinuxHint.koosLinuxHint.com

Pange tähele, et valikulise argumendi saab kohustuslikuks muuta, kasutades täiendavat kohustuslikku = tõest argumenti.

Lõpuks saate sõnastuse vähendamiseks määratleda ka argumendi lühendatud versioonid, kasutades - (üks kriips).

importargparse

parser =argparse.ArgumentParser(kirjeldus='Testprogramm.')

parser.lisa_argument(-lk, '--print_string', abi='Prindib esitatud argumendi.',vaikimisi=TOjuhuslik string.)

args= parser.parse_args()

printida(args.print_string)

Järgmise käsu käivitamine peaks andma teile sama tulemuse nagu eespool:

$ ./test.py-p LinuxHint.koos

Näide 3: käsitsege täisarvu argumenti

Argumentide käsitlemiseks, mis vajavad täisarvu väärtusi, peate tüübi märksõnaks määrama int, et lubada valideerimist ja visata vigu juhuks, kui tingimus ei ole täidetud.

importargparse

parser =argparse.ArgumentParser(kirjeldus='Testprogramm.')

parser.lisa_argument('-p', '--print_string', abi='Prindib esitatud argumendi.', tüüpi=int)

args= parser.parse_args()

printida(args.print_string)

Proovige käivitada järgmine käsk:

$ ./test.py-p LinuxHint.koos

Peaksite nägema sellist viga:

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

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

Kui esitate täisarvulise väärtuse, saate õige tulemuse.

$ ./test.py-lk10001000

Näide 4: käituge õigete ja valede lülititega

Toiminguargumenti kasutades saate edastada argumente ilma väärtusteta, et käsitleda neid tõeliste ja valede lippudena.

importargparse

parser =argparse.ArgumentParser(kirjeldus='Testprogramm.')

parser.lisa_argument('-p', '--print_string', abi='Prindib esitatud argumendi.',tegevus='poe_tõde')

args= parser.parse_args()

printida(args.print_string)

Käivitage allolev käsk, et saada väljundiks lihtne True:

$ ./test.py-lk

Kui käivitate skripti ilma argumendita -p, määratakse selle asemel vale väärtus. Tegevussõna märksõna store_true määrab muutujale print_string tõese väärtuse alati, kui argument -p on selgesõnaliselt määratud, vastasel juhul määratakse muutujale vale.

Näide 5: käsitlege argumendi väärtusi loendina

Kui soovite saada mitu väärtust korraga ja salvestada need loendisse, peate esitama nargs märksõna järgmises vormingus:

importargparse

parser =argparse.ArgumentParser(kirjeldus='Testprogramm.')

parser.lisa_argument('-p', '--print_string', abi='Prindib esitatud argumendi.',nargs='*')

args= parser.parse_args()

printida(args.print_string)

Ülaltoodud koodi testimiseks käivitage järgmine käsk:

$ ./test.py-p a b

Peaksite saama sellise väljundi:

['a', 'b']

Järeldus

Argparse moodul on üsna põhjalik, pakkudes palju võimalusi käsurea rakenduste käitumise ja kasutaja esitatud väärtuste sõelumiseks. Need näited puudutavad ainult argparse mooduli põhikasutust. Täiustatud ja keerukate rakenduste jaoks võib vaja minna erinevaid rakendusi. Külastage ametlik dokumentatsioon mooduli täieliku selgituse saamiseks.