Sådan tilføjes kommandolinjeargumenter til et Python -script

How Add Command Line Arguments Python Script



Hvis du har udviklet et Python -script eller -program, der primært er beregnet til at blive kørt i terminalemulatorer eller endda GUI -apps, kan tilføjelse af kommandolinjeargumenter forbedre dets anvendelighed, kodelæsbarhed, applikationsstruktur og generelle brugervenlighed af applikationen for slutbrugerne. Disse kommandolinjeargumenter kaldes også optioner eller switches og fungerer på samme måde som argumenter, du normalt ser i bash -scripts og andre C / C ++ - baserede programmer.

For at tilføje argumenter til Python-scripts skal du bruge et indbygget modul med navnet argparse. Som navnet antyder, analyserer det kommandolinjeargumenter, der blev brugt under lancering af et Python -script eller -program. Disse analyserede argumenter kontrolleres også af argparse -modulet for at sikre, at de er af korrekt type. Der rejses fejl, hvis der er ugyldige værdier i argumenter.







Brug af det argparse modul kan bedst forstås gennem eksempler. Nedenfor er nogle kodeeksempler, der får dig i gang med argparse -modulet.



Eksempel 1: Generer hjælpeargument og meddelelse

Overvej nedenstående kodeeksempel:



importereargparse

parser =argparse.ArgumentParser(beskrivelse='Et testprogram.')

args= parser.parse_args()

Den første erklæring importerer argparse -modulet. Dernæst oprettes en ny forekomst af ArgumentParser -objekt, og en kort beskrivelse af programmet leveres som et argument. ArgumentParser -objektet er nødvendigt for at konvertere kommandolinjeargumentværdier til datatyper, som Python forstår. Dette gøres ved hjælp af parse_args -metoden for ArgumentParser -objekt, som vist i den sidste sætning.





Forudsat at du har gemt kodeeksemplet angivet ovenfor i en fil med navnet test.py, får du hjælpemeddelelser relateret til programmet ved at køre kommandoerne herunder.

$ ./prøve.py-h

$ ./prøve.py-Hjælp

Du bør få noget output svarende til dette:



brug: test.py [-h]


Et testprogram.


valgfrie argumenter:

-h, -hjælp vis denne hjælpemeddelelse og afslut

Bemærk, at der ikke er tilføjet nogen logik til at håndtere analyserede argumenter og konvertere dem til objekter til ovenstående kodeeksempel. Derfor vises hjælpemeddelelser til individuelle argumenter ikke i output. Når du tilføjer logik til håndtering af værdier for analyserede argumenter i dit program, begynder hjælpemeddelelser at vise beskrivelse for individuelle argumenter.

Eksempel 2: Håndter et strengargument

For at tilføje argumenter, der accepteres af dit python -script, skal du bruge metoden add_argument. Tag et kig på følgende kode:

importereargparse

parser =argparse.ArgumentParser(beskrivelse='Et testprogram.')

parser.tilføj_argument('print_string', Hjælp='Udskriver det medfølgende argument.')

args= parser.parse_args()

Print(args.print_string)

Der er tilføjet en ny erklæring, der viser brug af metoden add_argument. Ethvert argument tilføjet ved lancering af scriptet vil blive behandlet som et print_string -objekt af ArgumentParser.

Bemærk, at add_argument -metoden som standard behandler værdier hentet fra argumenter som strenge, så du ikke behøver eksplicit at angive typen i dette tilfælde. En standardværdi på None tildeles også tilføjede argumenter, medmindre de tilsidesættes.

Tag endnu engang et kig på hjælpemeddelelsen:

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


Et testprogram.


positionelle argumenter:

print_string Udskriver det medfølgende argument.


valgfrie argumenter:

-h, -hjælp vis denne hjælpemeddelelse og afslut

En af linjerne i output siger positionelle argumenter. Da der ikke er defineret noget nøgleord til argument, behandles argumentet i øjeblikket som et positionelt argument, hvor rækkefølgen og placeringen af ​​det leverede argument har direkte effekt på programmet. Positioneringsargumenter er også obligatoriske, medmindre du manuelt ændrer deres adfærd.

For at definere og analysere valgfrie argumenter kan du bruge - (dobbelt bindestreg) og ændre deres standardværdier ved hjælp af standardargumentet.

importereargparse

parser =argparse.ArgumentParser(beskrivelse='Et testprogram.')

parser.tilføj_argument('--print_string', Hjælp='Udskriver det medfølgende argument.',Standard=TILtilfældig snor.)

args= parser.parse_args()

Print(args.print_string)

Når du nu kører test.py script uden noget argument, skal du få en tilfældig streng. som output. Du kan også valgfrit bruge søgeordet –print_string til at udskrive en valgfri streng.

$ ./prøve.py--print_string LinuxHint.medLinuxHint.com

Bemærk, at du kan gøre et valgfrit argument obligatorisk ved at bruge et ekstra påkrævet = sandt argument.

Endelig kan du også definere stenografiversioner af argumentet ved hjælp af - (enkelt bindestreg) for at reducere verbositet.

importereargparse

parser =argparse.ArgumentParser(beskrivelse='Et testprogram.')

parser.tilføj_argument(-s, '--print_string', Hjælp='Udskriver det medfølgende argument.',Standard=TILtilfældig snor.)

args= parser.parse_args()

Print(args.print_string)

Kørsel af følgende kommando skulle give dig det samme resultat som ovenfor:

$ ./prøve.py-p LinuxHint.med

Eksempel 3: Håndter et heltalsargument

For at håndtere argumenter, der har brug for heltalsværdier, skal du indstille type nøgleord til int for at tillade validering og fejl i tilfælde af, at betingelsen ikke er opfyldt.

importereargparse

parser =argparse.ArgumentParser(beskrivelse='Et testprogram.')

parser.tilføj_argument('-p', '--print_string', Hjælp='Udskriver det medfølgende argument.', type=int)

args= parser.parse_args()

Print(args.print_string)

Prøv at køre følgende kommando:

$ ./prøve.py-p LinuxHint.med

Du bør få en fejl som denne:

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

test.py: fejl: argument -p/-print_string: ugyldig int-værdi: 'LinuxHint.com'

Hvis du angiver en heltalsværdi, får du det korrekte resultat:

$ ./prøve.py-s10001000

Eksempel 4: Håndter True og False Toggles

Du kan videregive argumenter uden værdier for at behandle dem som sandt og falsk flag ved hjælp af handlingsargumentet.

importereargparse

parser =argparse.ArgumentParser(beskrivelse='Et testprogram.')

parser.tilføj_argument('-p', '--print_string', Hjælp='Udskriver det medfølgende argument.',handling='store_true')

args= parser.parse_args()

Print(args.print_string)

Kør kommandoen herunder for at få en simpel True som output:

$ ./prøve.py-s

Hvis du kører scriptet uden -p -argumentet, tildeles der i stedet en falsk værdi. Værdien store_true for handlingsordet tildeler variabel print_string en sand værdi, når -p -argumentet eksplicit er angivet, ellers tildeles variablen False.

Eksempel 5: Behandl argumentværdier som liste

Hvis du vil have flere værdier på én gang og gemme dem på listen, skal du angive nargs -nøgleord i følgende format:

importereargparse

parser =argparse.ArgumentParser(beskrivelse='Et testprogram.')

parser.tilføj_argument('-p', '--print_string', Hjælp='Udskriver det medfølgende argument.',nargs='*')

args= parser.parse_args()

Print(args.print_string)

Kør følgende kommando for at teste koden ovenfor:

$ ./prøve.py-p a b

Du bør få noget output som dette:

['a', 'b']

Konklusion

Argparse -modulet er temmelig omfattende med masser af muligheder for at justere adfærd for kommandolinjeapplikationer og analysere brugerleverede værdier. Disse eksempler berører kun den grundlæggende brug af argparse -modulet. For avancerede og komplekse applikationer har du muligvis brug for forskellige implementeringer. Besøg officiel dokumentation for en fuldstændig forklaring af modulet.