Python

Hvordan legge til kommandolinjeargumenter til et Python-skript

Hvordan legge til kommandolinjeargumenter til et Python-skript

Hvis du har utviklet et Python-skript eller et program som er ment å primært kjøres i terminalemulatorer eller til og med GUI-apper, kan du legge til kommandolinjeargumenter for å forbedre dets brukervennlighet, kodelesbarhet, applikasjonsstruktur og generelle 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 kalt “argparse”. Som navnet antyder, analyserer den kommandolinjeargumentene som brukes mens du starter et Python-skript eller -program. Disse analyserte argumentene blir også sjekket av "argparse" -modulen for å sikre at de er av riktig "type". Feil heves hvis det er ugyldige verdier i argumenter.

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

Eksempel 1: Generer hjelpeargument og melding

Vurder koden eksemplet 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 blir gitt som et argument. ArgumentParser-objektet er nødvendig for å konvertere kommandolinjeargumentverdier til datatyper forstått av Python. Dette gjøres ved hjelp av "parse_args" -metoden til ArgumentParser-objektet, som vist i forrige uttalelse.

Forutsatt at du har lagret kodeprøven som er angitt ovenfor i en fil med navnet “test.py ”, når du kjører kommandoene nedenfor, får du hjelpemeldinger relatert til programmet.

$ ./test.py -h
$ ./test.py - hjelp

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

bruk: test.py [-h]
Et testprogram.
valgfrie argumenter:
-h, --hjelp viser denne hjelpemeldingen og avslutter

Merk at ingen logikk for å håndtere analyserte argumenter og konvertere dem til objekter er lagt til kodeeksemplet nevnt ovenfor. Hjelpemeldinger for individuelle argumenter vises derfor ikke i utdataene. Når du har lagt til logikk for å håndtere verdier for analyserte argumenter i programmet, 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.')
parser.add_argument ("print_string", help = "Skriver ut det medfølgende argumentet.")
args = parser.parse_args ()
skriv ut (arg.utskriftsstreng)

En ny uttalelse er lagt til som viser bruk av “add_argument” -metoden. Ethvert argument som legges til når du starter skriptet, blir behandlet som et "print_string" -objekt av "ArgumentParser".

Legg merke til at metoden “add_argument” som standard behandler verdier hentet fra argumenter som strenger, slik at du ikke trenger å eksplisitt spesifisere “typen” i dette tilfellet. En standardverdi på "Ingen" er også tildelt tilførte argumenter, med mindre den overstyres.

Nok en gang 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 viser denne hjelpemeldingen og avslutter

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

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

importer argparse
parser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("- print_string", help = "Skriver ut det medfølgende argumentet.", standard =” En tilfeldig streng.”)
args = parser.parse_args ()
skriv ut (arg.utskriftsstreng)

Nå når du kjører “test.py ”-skript uten noe argument, bør du få“ En tilfeldig streng.”Som utgang. Du kan også velge søkeordet "-print_string" for å skrive ut en streng du ønsker.

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

Merk at du kan gjøre et valgfritt argument obligatorisk ved å bruke et ekstra "required = True" -argument.

Til slutt kan du også definere stenografiske versjoner av argumentet ved å bruke “-” (enkelt strek) for å redusere detaljnivået.

importer argparse
parser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument (“- p”, "--print_string", help = "Skriver ut det medfølgende argumentet.", standard =” En tilfeldig streng.”)
args = parser.parse_args ()
skriv ut (arg.utskriftsstreng)

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

$ ./test.py -p LinuxHint.com

Eksempel 3: Håndter et heltallargument

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

importer argparse
parser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("- p", "--print_string", help = "Skriver ut det medfølgende argumentet.", type = int)
args = parser.parse_args ()
skriv ut (arg.utskriftsstreng)

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

$ ./test.py -p LinuxHint.com

Du bør få en feil som dette:

bruk: test.py [-h] [-p PRINT_STRING]
test.py: feil: argument -p / - print_string: ugyldig int-verdi: 'LinuxHint.com '

Å oppgi et heltall gir deg riktig resultat:

$ ./test.py -p 1000 1000

Eksempel 4: Håndter sanne og falske veksler

Du kan sende argumenter uten noen verdier for å behandle dem som sant og falskt flagg ved hjelp av "handling" -argumentet.

importer argparse
parser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("- p", "--print_string", help = "Skriver ut det medfølgende argumentet.", action =" store_sannhet ")
args = parser.parse_args ()
skriv ut (arg.utskriftsstreng)

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

$ ./test.py -p

Hvis du kjører skriptet uten "-p" -argumentet, tildeles en "Falsk" -verdi i stedet. Verdien “store_true” av nøkkelordet “action” tilordner en “True” -verdi til “print_string” -variabelen når “-p” -argumentet er eksplisitt spesifisert, ellers blir False tildelt variabelen.

Eksempel 5: Behandle argumentverdier som en liste

Hvis du ønsker å få flere verdier samtidig og lagre dem i listen, må du oppgi "nargs" nøkkelord i følgende format:

importer argparse
parser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("- p", "--print_string", help = "Skriver ut det medfølgende argumentet.", nargs = '*')
args = parser.parse_args ()
skriv ut (arg.utskriftsstreng)

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

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

Du bør få litt produksjon som dette:

['a', 'b']

Konklusjon

Den "argparse" modulen er ganske omfattende med mange muligheter for å finjustere oppførselen til kommandolinjeprogrammer og analysere verdier som leveres av brukerne. 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 fullstendig forklaring på modulen.

Hvordan vise FPS-teller i Linux-spill
Linux-spill fikk et stort press da Valve kunngjorde Linux-støtte for Steam-klient og spillene deres i 2012. Siden den gang har mange AAA- og indiespil...
Hvordan laste ned og spille Sid Meier's Civilization VI på Linux
Introduksjon til spillet Civilization 6 er et moderne syn på det klassiske konseptet som ble introdusert i serien av Age of Empires-spillene. Ideen va...
Hvordan installere og spille Doom på Linux
Introduksjon til Doom Doom-serien stammer fra 90-tallet etter utgivelsen av den originale Doom. Det ble en øyeblikkelig suksess, og fra den tiden og u...