Kung nakabuo ka ng isang script ng Python o application na sinadya upang pangunahin na patakbuhin sa mga emulator ng terminal o kahit na mga app ng GUI, ang pagdaragdag ng mga argumento sa linya ng utos ay maaaring mapabuti ang kakayahang magamit, kakayahang mabasa ang code, istraktura ng application at pangkalahatang kabaitan ng gumagamit ng aplikasyon para sa mga end user. Ang mga argumento ng linya ng utos na ito ay tinatawag ding mga pagpipilian o switch at gumagana nang katulad sa mga argumento na karaniwang nakikita mo sa mga script ng bash at iba pang mga programa na batay sa C / C ++.
Upang magdagdag ng mga argumento sa mga script ng Python, kakailanganin mong gumamit ng built-in na module na pinangalanang argparse. Tulad ng ipinahihiwatig ng pangalan, ini-parse nito ang mga argumento ng linya ng utos na ginamit habang inilulunsad ang isang script ng Python o aplikasyon. Ang mga naka-parse na argumento ay naka-check din ng argparse module upang matiyak na ang mga ito ay wastong uri. Tinaasan ang mga error kung mayroong mga hindi wastong halaga sa mga argumento.
Ang paggamit ng argparse module ay maaaring higit na maunawaan sa pamamagitan ng mga halimbawa. Nasa ibaba ang ilang mga sample ng code na magsisimula ka sa module ng argparse.
Halimbawa 1: Bumuo ng Tulong sa Argumento at Mensahe
Isaalang-alang ang sample ng code sa ibaba:
angkatmakipagtalo
parser =makipagtaloArgumentParser(paglalarawan='Isang programa sa pagsubok.')
mga argumento= parser.parse_args()
Ang unang pahayag ay nag-import ng argparse module. Susunod, ang isang bagong halimbawa ng ArgumentParser object ay nilikha at isang maikling paglalarawan para sa programa ay ibinibigay bilang isang argument. Ang object ng ArgumentParser ay kinakailangan upang ma-convert ang mga halaga ng linya ng utos ng utos sa mga uri ng data na naintindihan ng Python. Ginagawa ito sa pamamagitan ng parse_args na pamamaraan ng ArgumentParser object, tulad ng ipinakita sa huling pahayag.
Ipagpalagay na nai-save mo ang sample ng code na nakasaad sa itaas sa isang file na pinangalanang test.py, ang pagpapatakbo ng mga utos sa ibaba ay makakatulong sa iyo ang mga mensahe na nauugnay sa programa.
$ ./pagsusulit.py-h$ ./pagsusulit.py-tulungan
Dapat kang makakuha ng ilang output na katulad nito:
paggamit: test.py [-h]
Isang programa sa pagsubok.
mga opsyonal na argumento:
-h, --help ipakita ang mensahe ng tulong na ito at paglabas
Tandaan na walang lohika upang hawakan ang mga naka-parse na argumento at i-convert ang mga ito sa mga bagay na naidagdag sa sample ng code na nabanggit sa itaas. Samakatuwid, ang mga mensahe ng tulong para sa mga indibidwal na argumento ay hindi ipinakita sa output. Kapag nagdagdag ka ng lohika para sa paghawak ng mga halaga ng mga na-parse na argumento sa iyong programa, magsisimulang magpakita ng paglalarawan ang mga mensahe ng tulong para sa mga indibidwal na argumento.
Halimbawa 2: Pangasiwaan ang isang String Argument
Upang magdagdag ng mga argumento na katanggap-tanggap ng iyong script ng sawa, kailangan mong gamitin ang pamamaraang add_argument. Tingnan ang sumusunod na code:
angkatmakipagtaloparser =makipagtaloArgumentParser(paglalarawan='Isang programa sa pagsubok.')
parser.add_argument('print_string', tulungan='Nagpi-print ng ibinigay na argumento.')
mga argumento= parser.parse_args()
mag-print(mga argumentoprint_string)
Ang isang bagong pahayag ay naidagdag na nagpapakita ng paggamit ng add_argument na pamamaraan. Anumang idinagdag na argumento kapag inilulunsad ang script ay ituturing bilang isang print_string object ng ArgumentParser.
Tandaan na bilang default, tinatrato ng pamamaraang add_argument ang mga halagang nakuha mula sa mga argumento bilang mga string, kaya hindi mo kailangang malinaw na tukuyin ang uri sa kasong ito. Ang isang default na halaga ng Wala ay nakatalaga din sa mga idinagdag na argumento, maliban kung na-override.
Muli tingnan ang mensahe ng tulong:
paggamit: test.py [-h] [print_string]Isang programa sa pagsubok.
mga posisyonal na argumento:
print_string Nai-print ang ibinigay na argument.
mga opsyonal na argumento:
-h, --help ipakita ang mensahe ng tulong na ito at paglabas
Ang isa sa mga linya sa output ay nagsasabi ng mga posisyonal na argumento. Dahil walang tinukoy na keyword para sa argument, kasalukuyang ang argument ay itinuturing bilang isang posisyonal na argumento kung saan ang pagkakasunud-sunod at posisyon ng ibinigay na argumento ay may direktang epekto sa programa. Ang mga posyonal na argumento ay ipinag-uutos din, maliban kung manu-mano mong binago ang kanilang pag-uugali.
Upang tukuyin at mai-parse ang mga opsyonal na argumento, maaari mong gamitin ang ((double dash) at baguhin ang kanilang mga default na halaga gamit ang default na argument.
angkatmakipagtaloparser =makipagtaloArgumentParser(paglalarawan='Isang programa sa pagsubok.')
parser.add_argument('--print_string', tulungan='Nagpi-print ng ibinigay na argumento.',default=SAsapalaran lubid.)
mga argumento= parser.parse_args()
mag-print(mga argumentoprint_string)
Ngayon kapag nagpatakbo ka ng test.py script nang walang anumang pagtatalo, dapat kang makakuha ng Isang random na string. bilang output. Maaari mo ring opsyonal na gamitin ang –print_string keyword upang mai-print ang anumang gusto mong string.
$ ./pagsusulit.py--print_string LinuxHint.kasama siLinuxHint.comTandaan na maaari mong gawing sapilitan ang isang opsyonal na argument sa pamamagitan ng paggamit ng isang karagdagang kinakailangang = Tunay na argumento.
Panghuli, maaari mo ring tukuyin ang mga maiikling bersyon ng argumento gamit ang - (solong dash) upang mabawasan ang pagkasensitibo.
angkatmakipagtaloparser =makipagtaloArgumentParser(paglalarawan='Isang programa sa pagsubok.')
parser.add_argument(-p, '--print_string', tulungan='Nagpi-print ng ibinigay na argumento.',default=SAsapalaran lubid.)
mga argumento= parser.parse_args()
mag-print(mga argumentoprint_string)
Ang pagpapatakbo ng sumusunod na utos ay dapat magbigay sa iyo ng parehong resulta tulad ng sa itaas:
$ ./pagsusulit.py-p LinuxHint.kasama siHalimbawa 3: Pangasiwaan ang isang Integer Argument
Upang hawakan ang mga argumento na nangangailangan ng mga halaga ng integer, kailangan mong itakda ang uri ng keyword upang payagan ang pagpapatunay at magtapon ng mga error kung sakaling hindi matugunan ang kundisyon.
angkatmakipagtaloparser =makipagtaloArgumentParser(paglalarawan='Isang programa sa pagsubok.')
parser.add_argument('-p', '--print_string', tulungan='Nagpi-print ng ibinigay na argumento.', uri=int)
mga argumento= parser.parse_args()
mag-print(mga argumentoprint_string)
Subukang patakbuhin ang sumusunod na utos:
$ ./pagsusulit.py-p LinuxHint.kasama siDapat kang makakuha ng isang error tulad nito:
paggamit: test.py [-h] [-p PRINT_STRING]test.py: error: argument -p / - print_string: hindi wastong int halaga: 'LinuxHint.com'
Ang pagbibigay ng isang halaga ng integer ay magbibigay sa iyo ng tamang resulta:
$ ./pagsusulit.py-p10001000Halimbawa 4: Pangasiwaan ang Tama at Maling Mga Toggle
Maaari kang pumasa ng mga argumento nang walang anumang mga halaga upang ituring ang mga ito bilang True at False flags gamit ang argument ng aksyon.
angkatmakipagtaloparser =makipagtaloArgumentParser(paglalarawan='Isang programa sa pagsubok.')
parser.add_argument('-p', '--print_string', tulungan='Nagpi-print ng ibinigay na argumento.',aksyon='store_true')
mga argumento= parser.parse_args()
mag-print(mga argumentoprint_string)
Patakbuhin ang utos sa ibaba upang makakuha ng isang simpleng Totoo bilang output:
$ ./pagsusulit.py-pKung patakbuhin mo ang script nang walang argument na -p, isang Maling halaga ang itatalaga sa halip. Ang halaga ng store_true ng keyword ng pagkilos ay nagtatalaga ng isang Tunay na halaga sa variable na print_string tuwing malinaw na tinukoy ang argument na -p, kung hindi man ay ang Mali ay nakatalaga sa variable.
Halimbawa 5: Tratuhin ang Mga Halaga ng Argumento bilang Listahan
Kung nais mong makakuha ng maraming mga halaga nang sabay-sabay at iimbak ang mga ito sa listahan, kailangan mong magbigay ng nargs keyword sa sumusunod na format:
angkatmakipagtaloparser =makipagtaloArgumentParser(paglalarawan='Isang programa sa pagsubok.')
parser.add_argument('-p', '--print_string', tulungan='Nagpi-print ng ibinigay na argumento.',nargs='*')
mga argumento= parser.parse_args()
mag-print(mga argumentoprint_string)
Patakbuhin ang sumusunod na utos upang subukan ang code sa itaas:
$ ./pagsusulit.py-p a bDapat kang makakuha ng ilang output tulad nito:
['a', 'b']Konklusyon
Ang module ng argparse ay medyo komprehensibo sa tonelada ng mga pagpipilian upang mai-tweak ang pag-uugali ng mga application ng linya ng utos at i-parse ang mga ibinigay na halaga ng gumagamit. Ang mga halimbawang ito ay nakakaapekto lamang sa pangunahing paggamit ng argparse module. Para sa mga advanced at kumplikadong aplikasyon, maaaring kailanganin mo ng iba't ibang pagpapatupad. Bisitahin ang opisyal na dokumentasyon para sa isang buong paliwanag ng modyul.