Slik legger du til kommandolinjeargumenter i et Python -script

How Add Command Line Arguments Python Script



Hvis du har utviklet et Python -skript eller et program som først og fremst skal kjøres i terminalemulatorer eller til og med GUI -apper, kan det å legge til kommandolinjeargumenter forbedre brukervennligheten, kodelesbarheten, applikasjonsstrukturen og den generelle brukervennligheten til applikasjonen for sluttbrukerne. Disse kommandolinjeargumentene kalles også alternativer eller brytere og fungerer på samme måte som argumenter du vanligvis ser i bash -skript og andre C / C ++ - baserte programmer.

For å legge til argumenter i Python-skript må du bruke en innebygd modul som heter argparse. Som navnet antyder, analyserer den kommandolinjeargumentene som ble brukt under oppstart av et Python -skript eller -program. Disse analyserte argumentene kontrolleres også av argparse -modulen for å sikre at de er av riktig type. Det oppstår feil hvis det er ugyldige verdier i argumenter.







Bruk av argparse -modulen kan best forstås gjennom eksempler. Nedenfor er noen kodeeksempler som får deg i gang med argparse -modulen.



Eksempel 1: Generer hjelpeargument og melding

Vurder kodeeksemplet nedenfor:



importargparse

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

args= parser.parse_args()

Den første setningen importerer argparse -modulen. Deretter opprettes en ny forekomst av ArgumentParser -objektet og en kort beskrivelse for programmet leveres som et argument. ArgumentParser -objektet er nødvendig for å konvertere kommandolinjeargumentverdier til datatyper som forstås av Python. Dette gjøres med parse_args -metoden for ArgumentParser -objektet, som vist i den siste setningen.





Forutsatt at du har lagret kodeeksemplet som er angitt ovenfor i en fil med navnet test.py, får du hjelpemeldinger relatert til programmet ved å kjøre kommandoene nedenfor.

$ ./test.py-h

$ ./test.py-hjelp

Du bør få noe output som ligner på dette:



bruk: test.py [-h]


Et testprogram.


valgfrie argumenter:

-h, --hjelp vis denne hjelpemeldingen og avslutt

Vær oppmerksom på at det ikke er lagt til noen logikk for å håndtere analyserte argumenter og konvertere dem til objekter i kodeeksemplet nevnt ovenfor. Hjelpemeldinger for individuelle argumenter vises derfor ikke i utdataene. Når du legger til logikk for å håndtere verdier for analyserte argumenter i programmet, begynner hjelpemeldinger å vise beskrivelse for individuelle argumenter.

Eksempel 2: Håndter et strengargument

For å legge til argumenter som er akseptable for python -skriptet ditt, må du bruke add_argument -metoden. Ta en titt på følgende kode:

importargparse

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

parser.add_argument('print_string', hjelp='Skriver ut det medfølgende argumentet.')

args= parser.parse_args()

skrive ut(args.print_string)

En ny setning er lagt til som viser bruk av add_argument -metoden. Alle argumenter som legges til når man starter skriptet, blir behandlet som et print_string -objekt av ArgumentParser.

Vær oppmerksom på at add_argument -metoden som standard behandler verdier hentet fra argumenter som strenger, slik at du ikke trenger å spesifisere typen eksplisitt i dette tilfellet. En standardverdi på None er også tilordnet tilleggsargumenter, med mindre det overstyres.

Ta en titt på hjelpemeldingen igjen:

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


Et testprogram.


posisjonelle argumenter:

print_string Skriver ut det medfølgende argumentet.


valgfrie argumenter:

-h, --hjelp vis denne hjelpemeldingen og avslutt

En av linjene i utdata sier posisjonsargumenter. Siden ingen nøkkelord for argument er definert, behandles argumentet for øyeblikket som et posisjonelt argument der rekkefølgen og posisjonen til det leverte argumentet har direkte effekt på programmet. Posisjonsargumenter er også obligatoriske, med mindre du endrer oppførselen manuelt.

For å definere og analysere valgfrie argumenter, kan du bruke - (dobbel strek) og endre standardverdiene ved hjelp av standardargumentet.

importargparse

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

parser.add_argument('--print_string', hjelp='Skriver ut det medfølgende argumentet.',misligholde=TILtilfeldig streng.)

args= parser.parse_args()

skrive ut(args.print_string)

Når du kjører test.py -skriptet uten argument, bør du få en tilfeldig streng. som utgang. Du kan også bruke søkeordet –print_string for å skrive ut hvilken som helst streng du ønsker.

$ ./test.py--print_string LinuxHint.medLinuxHint.com

Vær oppmerksom på at du kan gjøre et valgfritt argument obligatorisk ved å bruke et ekstra obligatorisk = True -argument.

Til slutt kan du også definere stenografiversjoner av argumentet ved å bruke - (enkelt bindestrek) for å redusere verbositet.

importargparse

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

parser.add_argument(-s, '--print_string', hjelp='Skriver ut det medfølgende argumentet.',misligholde=TILtilfeldig streng.)

args= parser.parse_args()

skrive ut(args.print_string)

Å kjøre følgende kommando bør gi deg samme resultat som ovenfor:

$ ./test.py-p LinuxHint.med

Eksempel 3: Håndter et heltallargument

For å håndtere argumenter som trenger heltallsverdier, må du angi type nøkkelord til int for å tillate validering og kaste feil hvis betingelsen ikke er oppfylt.

importargparse

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

parser.add_argument('-p', '--print_string', hjelp='Skriver ut det medfølgende argumentet.', type=int)

args= parser.parse_args()

skrive ut(args.print_string)

Prøv å kjøre følgende kommando:

$ ./test.py-p LinuxHint.med

Du bør få en feil som denne:

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

test.py: feil: argument -p/-print_string: ugyldig int-verdi: 'LinuxHint.com'

Hvis du angir en heltallsverdi, får du riktig resultat:

$ ./test.py-s10001000

Eksempel 4: Håndter True and False Toggles

Du kan sende argumenter uten verdier for å behandle dem som sanne og usanne flagg ved hjelp av handlingsargumentet.

importargparse

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

parser.add_argument('-p', '--print_string', hjelp='Skriver ut det medfølgende argumentet.',handling='store_true')

args= parser.parse_args()

skrive ut(args.print_string)

Kjør kommandoen nedenfor for å få en enkel True som utdata:

$ ./test.py-s

Hvis du kjører skriptet uten -p -argumentet, vil en falsk verdi bli tildelt i stedet. Verdien store_true for handlingsordet tilordner en True -verdi til varianten print_string når -p -argumentet er eksplisitt spesifisert, ellers blir False tilordnet variabelen.

Eksempel 5: Behandle argumentverdier som liste

Hvis du vil få flere verdier samtidig og lagre dem i listen, må du oppgi nargs -søkeord i følgende format:

importargparse

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

parser.add_argument('-p', '--print_string', hjelp='Skriver ut det medfølgende argumentet.',nargs='*')

args= parser.parse_args()

skrive ut(args.print_string)

Kjør følgende kommando for å teste koden ovenfor:

$ ./test.py-p a b

Du bør få noe utgang som dette:

['a', 'b']

Konklusjon

Argparse -modulen er ganske omfattende med tonnevis av alternativer for å justere oppførselen til kommandolinjeapplikasjoner og analysere brukerleverte verdier. Disse eksemplene berører bare den grunnleggende bruken av argparse -modulen. For avanserte og komplekse applikasjoner kan du trenge forskjellige implementeringer. Besøk offisiell dokumentasjon for en fullstendig forklaring av modulen.