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ą:
importasargparseanalizatorius =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ą.
importasargparseanalizatorius =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.comAtminkite, 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ą.
importasargparseanalizatorius =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.su3 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.
importasargparseanalizatorius =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.suTurė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-p100010004 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.
importasargparseanalizatorius =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-pJei 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:
importasargparseanalizatorius =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 bTurė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į.