Kā pievienot komandrindas argumentus Python skriptam

How Add Command Line Arguments Python Script



Ja esat izstrādājis Python skriptu vai lietojumprogrammu, kas galvenokārt paredzēta darbināšanai termināla emulatoros vai pat GUI lietotnēs, komandrindas argumentu pievienošana var uzlabot tās lietojamību, koda lasāmību, lietojumprogrammas struktūru un vispārējo lietotājam draudzīgumu gala lietotājiem. Šos komandrindas argumentus sauc arī par opcijām vai slēdžiem, un tie darbojas līdzīgi argumentiem, kurus parasti redzat bash skriptos un citās programmās, kuru pamatā ir C / C ++.

Lai pievienotu argumentus Python skriptiem, jums būs jāizmanto iebūvēts modulis ar nosaukumu argparse. Kā norāda nosaukums, tas analizē komandrindas argumentus, kas tiek izmantoti, palaižot Python skriptu vai lietojumprogrammu. Šos parsētos argumentus pārbauda arī argparse modulis, lai pārliecinātos, ka tie ir pareiza tipa. Kļūdas rodas, ja argumentos ir nederīgas vērtības.







Argparse moduļa izmantošanu vislabāk var saprast, izmantojot piemērus. Zemāk ir daži koda paraugi, kas ļaus jums sākt ar argparse moduli.



1. piemērs: ģenerējiet palīdzības argumentu un ziņojumu

Apsveriet tālāk redzamo koda paraugu:



importētargparse

parsētājs =argparse.ArgumentParser(apraksts='Pārbaudes programma.')

args= parsētājs.parse_args()

Pirmais paziņojums importē argparse moduli. Pēc tam tiek izveidots jauns ArgumentParser objekta gadījums un kā arguments tiek sniegts īss programmas apraksts. ArgumentParser objekts ir nepieciešams, lai komandrindas argumentu vērtības pārvērstu par Python saprotamiem datu tipiem. Tas tiek darīts ar objekta ArgumentParser metodi parse_args, kā parādīts pēdējā paziņojumā.





Pieņemot, ka esat saglabājis iepriekš norādīto koda paraugu failā ar nosaukumu test.py, izpildot tālāk norādītās komandas, jūs saņemsiet palīdzības ziņojumus, kas saistīti ar programmu.

$ ./pārbaude.py-h

$ ./pārbaude.py-palīdzēt

Jums vajadzētu iegūt kādu līdzīgu izvadi:



lietojums: test.py [-h]


Pārbaudes programma.


izvēles argumenti:

-h, --palīdziet parādīt šo palīdzības ziņojumu un iziet

Ievērojiet, ka iepriekš minētajam koda paraugam nav pievienota loģika, lai apstrādātu parsētos argumentus un tos pārvērstu objektos. Tādējādi palīdzības ziņojumi atsevišķiem argumentiem netiek parādīti izvadē. Kad programmā pievienosit loģiku parsēto argumentu vērtību apstrādei, palīdzības ziņojumos tiks parādīts atsevišķu argumentu apraksts.

2. piemērs: apstrādājiet stīgu argumentu

Lai pievienotu argumentus, ko pieņem jūsu python skripts, jums jāizmanto metode add_argument. Apskatiet šādu kodu:

importētargparse

parsētājs =argparse.ArgumentParser(apraksts='Pārbaudes programma.')

parsētājs.add_argument('print_string', palīdzēt='Izdrukā iesniegto argumentu.')

args= parsētājs.parse_args()

drukāt(args.print_string)

Ir pievienots jauns paziņojums, kas parāda metodes add_argument izmantošanu. ArgumentParser jebkuru argumentu, kas pievienots skripta palaišanas laikā, uzskatīs par objektu print_string.

Ņemiet vērā, ka pēc noklusējuma metode add_argument vērtības, kas iegūtas no argumentiem, uzskata par virknēm, tāpēc jums šajā gadījumā nav skaidri jānorāda veids. Pievienotajiem argumentiem tiek piešķirta arī noklusējuma vērtība Nav, ja vien tie netiek ignorēti.

Vēlreiz apskatiet palīdzības ziņojumu:

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


Pārbaudes programma.


pozicionālie argumenti:

print_string Drukā pievienoto argumentu.


izvēles argumenti:

-h, --palīdziet parādīt šo palīdzības ziņojumu un iziet

Viena no izejas rindām saka pozicionālos argumentus. Tā kā neviens argumenta atslēgvārds nav definēts, pašlaik arguments tiek uzskatīts par pozicionālu argumentu, ja iesniegtā argumenta secībai un pozīcijai ir tieša ietekme uz programmu. Pozicionālie argumenti ir arī obligāti, ja vien manuāli nemaināt to uzvedību.

Lai definētu un parsētu izvēles argumentus, varat izmantot - (dubultā domuzīme) un mainīt to noklusējuma vērtības, izmantojot noklusējuma argumentu.

importētargparse

parsētājs =argparse.ArgumentParser(apraksts='Pārbaudes programma.')

parsētājs.add_argument('--print_string', palīdzēt='Izdrukā iesniegto argumentu.',noklusējuma=TOnejauši virkne.)

args= parsētājs.parse_args()

drukāt(args.print_string)

Tagad, palaižot skriptu test.py bez jebkādiem argumentiem, jums vajadzētu iegūt izlases virkni. kā izeja. Varat arī pēc izvēles izmantot atslēgvārdu –print_string, lai izdrukātu jebkuru jūsu izvēlētu virkni.

$ ./pārbaude.py--print_string LinuxPadoms.arLinuxHint.com

Ņemiet vērā, ka neobligātu argumentu var padarīt obligātu, izmantojot papildu obligāto = patieso argumentu.

Visbeidzot, jūs varat arī definēt argumenta stenogrammas, izmantojot - (viena domuzīme), lai samazinātu daudzpusību.

importētargparse

parsētājs =argparse.ArgumentParser(apraksts='Pārbaudes programma.')

parsētājs.add_argument(-lpp, '--print_string', palīdzēt='Izdrukā iesniegto argumentu.',noklusējuma=TOnejauši virkne.)

args= parsētājs.parse_args()

drukāt(args.print_string)

Palaižot šādu komandu, jums vajadzētu iegūt tādu pašu rezultātu kā iepriekš:

$ ./pārbaude.py-p Linux Padoms.ar

3. piemērs: apstrādājiet veselo skaitļu argumentu

Lai apstrādātu argumentus, kuriem nepieciešamas veselas skaitļa vērtības, jums jāiestata atslēgvārda veids int, lai atļautu validāciju un mest kļūdas, ja nosacījums nav izpildīts.

importētargparse

parsētājs =argparse.ArgumentParser(apraksts='Pārbaudes programma.')

parsētājs.add_argument('-p', '--print_string', palīdzēt='Izdrukā iesniegto argumentu.', tipa=int)

args= parsētājs.parse_args()

drukāt(args.print_string)

Mēģiniet palaist šādu komandu:

$ ./pārbaude.py-p Linux Padoms.ar

Jums vajadzētu saņemt šādu kļūdu:

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

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

Norādot veselu skaitli, tiks iegūts pareizs rezultāts:

$ ./pārbaude.py-lpp10001000

4. piemērs: apstrādājiet patiesas un nepatiesas pārslēgšanas

Izmantojot darbības argumentu, varat nodot argumentus bez vērtībām, lai tos uzskatītu par patiesiem un nepatiesiem.

importētargparse

parsētājs =argparse.ArgumentParser(apraksts='Pārbaudes programma.')

parsētājs.add_argument('-p', '--print_string', palīdzēt='Izdrukā iesniegto argumentu.',darbība='store_true')

args= parsētājs.parse_args()

drukāt(args.print_string)

Palaidiet zemāk esošo komandu, lai iegūtu vienkāršu True kā izvadi:

$ ./pārbaude.py-lpp

Ja skriptu palaižat bez argumenta -p, tā vietā tiks piešķirta nepatiesa vērtība. Darbības atslēgvārda vērtība store_true piešķir mainīgajam print_string patiesu vērtību ikreiz, kad ir skaidri norādīts arguments -p, pretējā gadījumā mainīgajam tiek piešķirts False.

5. piemērs. Argumentu vērtības uzskata par sarakstu

Ja vēlaties iegūt vairākas vērtības vienlaikus un saglabāt tās sarakstā, jums jānorāda atslēgvārds šādā formātā:

importētargparse

parsētājs =argparse.ArgumentParser(apraksts='Pārbaudes programma.')

parsētājs.add_argument('-p', '--print_string', palīdzēt='Izdrukā iesniegto argumentu.',nargs='*')

args= parsētājs.parse_args()

drukāt(args.print_string)

Palaidiet šo komandu, lai pārbaudītu iepriekš minēto kodu:

$ ./pārbaude.py-p a b

Jums vajadzētu iegūt šādu rezultātu:

['a', 'b']

Secinājums

Argparse modulis ir diezgan visaptverošs ar daudzām iespējām, kā uzlabot komandrindas lietojumprogrammu uzvedību un parsēt lietotāja sniegtās vērtības. Šie piemēri skar tikai argparse moduļa pamata lietojumu. Uzlabotām un sarežģītām lietojumprogrammām var būt vajadzīgas dažādas ieviešanas iespējas. Apmeklējiet oficiālā dokumentācija lai iegūtu pilnu moduļa skaidrojumu.