Python

Kā pievienot komandrindas argumentus Python skriptam?

Kā pievienot komandrindas argumentus Python skriptam?
Ja esat izstrādājis Python skriptu vai lietojumprogrammu, kas galvenokārt paredzēta termināļa emulatoros vai pat GUI lietotnēs, komandrindas argumentu pievienošana var uzlabot tā lietojamību, koda lasāmību, lietojumprogrammas struktūru un lietojumprogrammas vispārējo lietotājdraudzīgumu. galalietotājiem. Šos komandrindas argumentus sauc arī par “opcijām” vai “slēdžiem” un darbojas līdzīgi argumentiem, kurus parasti redzat bash skriptos un citās C / C ++ balstītās programmās.

Lai pievienotu argumentus Python skriptiem, jums būs jāizmanto iebūvētais modulis ar nosaukumu “Argparse”. Kā norāda nosaukums, tas parsē komandrindas argumentus, kas izmantoti, palaižot Python skriptu vai lietojumprogrammu. Šos parsētos argumentus pārbauda arī “argparse” modulis, lai pārliecinātos, ka tiem ir pareizs “tips”. Ja argumentos ir nederīgas vērtības, tiek pieļautas kļūdas.

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

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

Apsveriet tālāk redzamo koda paraugu:

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

Pirmajā paziņojumā tiek importēts “argparse” modulis. Pēc tam tiek izveidots jauns objekta “ArgumentParser” gadījums un kā arguments tiek sniegts īss programmas apraksts. Objekts ArgumentParser ir nepieciešams, lai komandrindas argumentu vērtības pārveidotu par Python saprotamiem datu tipiem. To veic ar objekta ArgumentParser metodi “parse_args”, kā parādīts pēdējā paziņojumā.

Pieņemot, ka iepriekš norādīto koda paraugu esat saglabājis failā ar nosaukumu “test.py ”, palaižot zemāk esošās komandas, jūs varēsiet palīdzēt ar programmu saistītiem ziņojumiem.

$ ./pārbaude.py -h
$ ./pārbaude.py --palīdzība

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

izmantošana: pārbaude.py [-h]
Testa programmas izvēles argumenti:
-h, --help parādīt šo palīdzības ziņojumu un iziet

Ņemiet vērā, ka iepriekš minētajam koda paraugam nav pievienota loģika, kas apstrādā parsētos argumentus un pārveido tos par objektiem. Tādējādi palīdzības ziņojumi atsevišķiem argumentiem netiek parādīti izvadē. Kad programmā būsit pievienojis parsētu argumentu vērtību apstrādes loģiku, palīdzības ziņojumos sāks rādīt atsevišķu argumentu aprakstus.

2. piemērs: rīkojieties ar virknes argumentu

Lai pievienotu argumentus, kurus pieņem jūsu Python skripts, jums jāizmanto metode “add_argument”. Apskatiet šo kodu:

importa argparse
parsētājs = argparse.ArgumentParser (apraksts = 'Pārbaudes programma.')
parsētājs.add_argument ("print_string", help = "Izdrukā piegādāto argumentu.")
args = parsētājs.parse_args ()
drukāt (arg.print_string)

Ir pievienots jauns paziņojums, kurā parādīta metodes “add_argument” izmantošana. Jebkurš arguments, kas pievienots, palaižot skriptu, ar “ArgumentParser” tiks uzskatīts 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 “tips”. Noklusējuma vērtība “None” tiek piešķirta arī pievienotajiem argumentiem, ja vien netiek ignorēta.

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

lietošana: pārbaude.py [-h] [print_string]
Testa programmas pozicionālie argumenti:
print_string izdrukā piegādāto argumentu
izvēles argumenti:
-h, --help parādīt šo palīdzības ziņojumu un iziet

Vienā no izvades rindām ir teikts “pozicionālie argumenti”. Tā kā nav definēts neviens atslēgvārds argumentam, šobrīd arguments tiek uzskatīts par “pozicionālo argumentu”, kur piegādāto argumentu secība un pozīcija tieši ietekmē programmu. Pozicionālie argumenti ir arī obligāti, ja vien jūs manuāli nemaināt viņu uzvedību.

Lai definētu un parsētu izvēles argumentus, varat izmantot “-” (ar domuzīmi) un mainīt to noklusējuma vērtības, izmantojot “default” argumentu.

importa argparse
parsētājs = argparse.ArgumentParser (apraksts = 'Pārbaudes programma.')
parsētājs.add_argument ("- print_string", help = "Izdrukā piegādāto argumentu.", default =" Nejauša virkne.”)
args = parsētājs.parse_args ()
drukāt (arg.print_string)

Tagad, kad jūs izpildāt “testu.py ”skripts bez jebkāda argumenta, jums jāiegūst“ Random string.”Kā izvadi. Varat arī izmantot atslēgvārdu “-print_string”, lai izdrukātu jebkuru virkni pēc savas izvēles.

$ ./pārbaude.py --print_string LinuxHint.com
LinuxHint.com

Ņemiet vērā, ka izvēles argumentu var padarīt obligātu, izmantojot papildu argumentu “obligāts = patiess”.

Visbeidzot, lai samazinātu daudzbalsību, varat arī definēt argumenta īsās versijas, izmantojot “-” (vienu domuzīmi).

importa argparse
parsētājs = argparse.ArgumentParser (apraksts = 'Pārbaudes programma.')
parsētājs.add_argument (“- p”, “--print_string”, help = “Izdrukā piegādāto argumentu.", default =" Nejauša virkne.”)
args = parsētājs.parse_args ()
drukāt (arg.print_string)

Palaidot šo komandu, jums būs tāds pats rezultāts kā iepriekš:

$ ./pārbaude.py -p LinuxHint.com

3. piemērs: rīkojieties ar veselu skaitli

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

importa argparse
parsētājs = argparse.ArgumentParser (apraksts = 'Pārbaudes programma.')
parsētājs.add_argument ("- p", "--print_string", help = "Izdrukā piegādāto argumentu.", tips = int)
args = parsētājs.parse_args ()
drukāt (arg.print_string)

Mēģiniet palaist šo komandu:

$ ./pārbaude.py -p LinuxHint.com

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

izmantošana: pārbaude.py [-h] [-p PRINT_STRING]
pārbaude.py: kļūda: arguments -p / - print_string: nederīga int vērtība: 'LinuxHint.com '

Norādot veselu skaitli, iegūsiet pareizu rezultātu:

$ ./pārbaude.py-1000 1000

4. piemērs: rīkojieties ar patiesām un nepatiesām pārslēgšanām

Izmantojot argumentu “action”, varat nodot argumentus bez vērtībām, lai tos uzskatītu par “True” un “False” karodziņiem.

importa argparse
parsētājs = argparse.ArgumentParser (apraksts = 'Pārbaudes programma.')
parsētājs.add_argument ("- p", "--print_string", help = "Izdrukā piegādāto argumentu.", action =" store_true ")
args = parsētājs.parse_args ()
drukāt (arg.print_string)

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

$ ./pārbaude.py -p

Ja palaidīsit skriptu bez “-p” argumenta, tā vietā tiks piešķirta vērtība “False”. Atslēgvārda “action” vērtība “store_true” piešķir “True” vērtību mainīgajam “print_string” ikreiz, kad ir skaidri norādīts arguments “-p”, pretējā gadījumā mainīgajam tiek piešķirts False.

5. piemērs: izturieties pret argumentu vērtībām kā sarakstu

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

importa argparse
parsētājs = argparse.ArgumentParser (apraksts = 'Pārbaudes programma.')
parsētājs.add_argument ("- p", "--print_string", help = "Izdrukā piegādāto argumentu.", nargs = '*')
args = parsētājs.parse_args ()
drukāt (arg.print_string)

Lai pārbaudītu iepriekš minēto kodu, izpildiet šo komandu:

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

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

['a', 'b']

Secinājums

Modulis “argparse” ir diezgan visaptverošs ar daudzām iespējām komandrindas lietojumprogrammu uzvedības pielāgošanai un lietotāja sniegto vērtību parsēšanai. Šie piemēri skar tikai “argparse” moduļa pamata lietošanu. Uzlabotām un sarežģītām lietojumprogrammām var būt nepieciešamas dažādas ieviešanas iespējas. Lai iegūtu pilnīgu moduļa skaidrojumu, apmeklējiet oficiālo dokumentāciju.

AppyMouse ekrāna skārienpaliktnis un peles rādītājs Windows planšetdatoriem
Planšetdatoru lietotājiem bieži pietrūkst peles rādītāja, it īpaši, ja viņi parasti lieto klēpjdatorus. Skārienekrāna viedtālruņiem un planšetdatoriem...
Vidējā peles poga nedarbojas sistēmā Windows 10
The peles vidējā poga palīdz jums ritināt garas tīmekļa lapas un ekrānus ar lielu datu daudzumu. Ja tas apstājas, jūs galu galā izmantosiet tastatūru,...
Kā nomainīt peles kreiso un labo pogu operētājsistēmā Windows 10
Tas ir diezgan normāli, ka visas datora peles ierīces ir ergonomiski izstrādātas lietotājiem ar labo roku. Bet ir pieejamas peles ierīces, kas ir īpaš...