Hvordan legge til kommandolinje -argumenter til et Python -skript

Hvordan legge til kommandolinje -argumenter til et Python -skript

Hvis du har utviklet et Python -skript eller applikasjon som er ment å først og fremst kjøres i terminalemulatorer eller til og med GUI -apper, kan det å legge til kommandolinje -argumenter forbedre dens brukbarhet, kodelesbarhet, applikasjonsstruktur og generell brukervennlighet av 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 det kommandolinje argumenter som brukes mens du lanserer et Python -skript eller applikasjon. Disse analyserte argumentene blir også sjekket av "Argparse" -modulen for å sikre at de er av riktig "type". Feil reises hvis det er ugyldige verdier i argumenter.

Bruk av Argparse -modulen kan forstås best gjennom eksempler. Nedenfor er noen kodeprøver som kommer i gang med Argparse -modulen.

Eksempel 1: Generer hjelp til å argumentere og melding

Vurder kodeprøven nedenfor:

Importer Argparse
Parser = Argparse.ArgumentParser (beskrivelse = 'et testprogram.')
Args = Parser.parse_args ()

Den første uttalelsen 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 kommandolinje argumentverdier til datatyper forstått av Python. Dette gjøres av "Parse_Args" -metoden for ArgumentParser -objektet, som vist i den siste uttalelsen.

Forutsatt at du har lagret kodeprøven som er angitt ovenfor i en fil som heter “Test.py ”, å kjøre kommandoene nedenfor vil få deg til å hjelpe meldinger relatert til programmet.

$ ./test.py -h
$ ./test.Py -Hjelp

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

Bruk: Test.py [-h]
Et testprogram.
Valgfrie argumenter:
-H, -hjelp

Merk at ingen logikk for å håndtere analyserte argumenter og konvertere dem til objekter er lagt til kodeprøven nevnt ovenfor. Derfor vises ikke hjelpemeldinger for individuelle argumenter i utdataene. Når du legger til logikk for håndtering av verdier av analyserte argumenter i programmet ditt, vil hjelpemeldinger begynne å vise beskrivelse for individuelle argumenter.

Eksempel 2: Håndter et strengargument

For å legge til argumenter som er akseptabelt med Python -skriptet, må du bruke metoden “add_argument”. Ta en titt på følgende kode:

Importer Argparse
Parser = Argparse.ArgumentParser (beskrivelse = 'et testprogram.')
analyser.add_argument ("print_string", hjelp = "Skriver ut det medfølgende argumentet.")
Args = Parser.parse_args ()
Trykk (Args.print_string)

En ny uttalelse er lagt til som viser bruk av "add_argument" -metoden. Ethvert argument lagt til når du lanserer skriptet, vil bli behandlet som et "print_string" -objekt av "ArgumentParser".

Merk at metoden "add_argument" som standard behandler verdier hentet fra argumenter som strenger, slik at du ikke eksplisitt må spesifisere "typen" i dette tilfellet. En standardverdi på "ingen" er også tilordnet tilsatte argumenter, med mindre overstyring.

Ta en titt på hjelpemeldingen:

Bruk: Test.py [-h] [print_string]
Et testprogram.
Posisjonsargumenter:
print_string skriver ut det medfølgende argumentet.
Valgfrie argumenter:
-H, -hjelp

En av linjene i output sier "posisjonsargumenter". Siden det ikke er definert noe nøkkelord for argument. Posisjonsargumenter er også obligatoriske, med mindre du endrer deres oppførsel manuelt.

For å definere og analysere valgfrie argumenter, kan du bruke “-” (Double Dash) og endre standardverdiene ved å bruke “Standard” -argumentet.

Importer Argparse
Parser = Argparse.ArgumentParser (beskrivelse = 'et testprogram.')
analyser.add_argument ("-print_string", hjelp = "Skriver ut det medfølgende argumentet.", standard =" en tilfeldig streng.")
Args = Parser.parse_args ()
Trykk (Args.print_string)

Nå når du kjører “Test.py ”-skript uten noe argument, bør du få“ en tilfeldig streng.”Som utgang. Du kan også bruke nøkkelordet “-print_string” for å skrive ut en hvilken som helst streng etter eget valg.

$ ./test.PY -TRING_STRING LINUXHINT.com Linuxhint.com

Merk at du kan gjøre et valgfritt argument obligatorisk ved å bruke et ekstra "påkrevd = sant" argument.

Til slutt kan du også definere korthåndsversjoner av argumentet ved å bruke "-" (enkeltstrekk) for å redusere verbositet.

Importer Argparse
Parser = Argparse.ArgumentParser (beskrivelse = 'et testprogram.')
analyser.add_argument ("-p", "--print_string", hjelp = "Skriver ut det medfølgende argumentet.", standard =" en tilfeldig streng.")
Args = Parser.parse_args ()
Trykk (Args.print_string)

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

$ ./test.py -p linuxhint.com

Eksempel 3: Håndter et heltallsargument

For å håndtere argumenter som trenger heltallverdier, må du stille inn "Type" nøkkelordet til "int" for å tillate validering og kaste feil i tilfelle tilstanden ikke er oppfylt.

Importer Argparse
Parser = Argparse.ArgumentParser (beskrivelse = 'et testprogram.')
analyser.add_argument ("-p", "--print_string", hjelp = "Skriver ut det medfølgende argumentet.", type = int)
Args = Parser.parse_args ()
Trykk (Args.print_string)

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

$ ./test.py -p linuxhint.com

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 '

Å levere en heltallverdi vil gi deg riktig resultat:

$ ./test.py -p 1000 1000

Eksempel 4: Håndter ekte og falske veksler

Du kan passere argumenter uten noen verdier for å behandle dem som sanne og falske flagg ved å bruke "Handlings" -argumentet.

Importer Argparse
Parser = Argparse.ArgumentParser (beskrivelse = 'et testprogram.')
analyser.add_argument ("-p", "--print_string", hjelp = "Skriver ut det medfølgende argumentet.", action =" Store_true ")
Args = Parser.parse_args ()
Trykk (Args.print_string)

Kjør kommandoen nedenfor for å få en enkel "sann" som utgangen:

$ ./test.py -p

Hvis du kjører skriptet uten "-p" -argumentet, vil en "falsk" verdi bli tildelt i stedet. Verdien "Store_true" for "Handling" -tnøkkelordet tildeler en "ekte" verdi til "print_string" -variabelen når "-p" -argumentet er eksplisitt spesifisert, ellers er falsk tilordnet variabelen.

Eksempel 5: Behandle argumentverdier som liste

Hvis du vil få flere verdier samtidig og lagre dem i listen, må du levere nøkkelordet "NARGS" i følgende format:

Importer Argparse
Parser = Argparse.ArgumentParser (beskrivelse = 'et testprogram.')
analyser.add_argument ("-p", "--print_string", hjelp = "Skriver ut det medfølgende argumentet.", nargs = '*')
Args = Parser.parse_args ()
Trykk (Args.print_string)

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

$ ./test.py -p “a” “b”

Du bør få noe utdata slik:

['A', 'B']

Konklusjon

"ArgParse" -modulen er ganske omfattende med mange alternativer for å finpusse atferden til kommandolinjeapplikasjoner og analyser brukere leverte verdier. Disse eksemplene berører bare den grunnleggende bruken av "Argparse" -modulen. For avanserte og komplekse applikasjoner kan det hende du trenger forskjellige implementeringer. Besøk den offisielle dokumentasjonen for en full forklaring av modulen.