Hvis du har udviklet et Python-script eller et program, der primært skal køres i terminalemulatorer eller endda GUI-apps, kan tilføjelse af kommandolinjeargumenter forbedre dets anvendelighed, kodelæsbarhed, applikationsstruktur og den samlede brugervenlighed af applikationen til slutbrugerne. Disse kommandolinjeargumenter kaldes også "optioner" eller "switche" 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, parser det kommandolinjeargumenter, der bruges, når der startes et Python-script eller en applikation. Disse analyserede argumenter kontrolleres også af "argparse" -modulet for at sikre, at de er af korrekt "type". Fejl hæves, hvis der er ugyldige værdier i argumenter.
Brug af argparse-modulet 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 kodeeksemplet nedenfor:
import argparseparser = 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" -objektet, og en kort beskrivelse af programmet leveres som et argument. ArgumentParser-objektet er nødvendigt for at konvertere kommandolinjeargumentværdier til datatyper forstået af Python. Dette gøres ved hjælp af "parse_args" -metoden til ArgumentParser-objektet, som vist i den sidste erklæring.
Forudsat at du har gemt kodeeksemplet angivet ovenfor i en fil med navnet “test.py ”, når du kører nedenstående kommandoer, får du hjælpemeddelelser relateret til programmet.
$ ./prøve.py -h$ ./prøve.py - hjælp
Du skal få noget output svarende til dette:
brug: test.py [-h]Et testprogram.
valgfri argumenter:
-h, --hjælp vis denne hjælpemeddelelse og afslut
Bemærk, at der ikke er fø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 af parsede 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 kan accepteres af dit python-script, skal du bruge metoden “add_argument”. Se på følgende kode:
import argparseparser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("print_string", help = "Udskriver det medfølgende argument.")
args = parser.parse_args ()
udskrive (args.print_string)
En ny erklæring er tilføjet, der viser brugen af "add_argument" -metoden. Ethvert argument, der tilføjes, når scriptet startes, behandles som et "print_string" -objekt af "ArgumentParser".
Bemærk, at "add_argument" -metoden som standard behandler værdier, der hentes fra argumenter som strenge, så du ikke behøver eksplicit at specificere "typen" i dette tilfælde. En standardværdi på "Ingen" tildeles også tilføjede argumenter, medmindre de tilsidesættes.
Se endnu en gang på hjælpemeddelelsen:
brug: test.py [-h] [print_string]Et testprogram.
positionelle argumenter:
print_string Udskriver det medfølgende argument.
valgfri 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 "positionalt argument", hvor rækkefølgen og placeringen af det leverede argument har direkte virkning på programmet. Positionsargumenter 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 “standard” -argumentet.
import argparseparser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("- print_string", help = "Udskriver det medfølgende argument.", standard =” En tilfældig streng.”)
args = parser.parse_args ()
udskrive (args.print_string)
Nu når du kører “test.py ”script uden noget argument, skulle du få“ En tilfældig streng.”Som output. Du kan også valgfrit bruge nøgleordet "-print_string" til at udskrive en hvilken som helst streng efter eget valg.
$ ./prøve.py --print_string LinuxHint.com LinuxHint.comBemærk, at du kan gøre et valgfrit argument obligatorisk ved at bruge et ekstra "krævet = sandt" argument.
Endelig kan du også definere stenografiske versioner af argumentet ved hjælp af "-" (enkelt bindestreg) for at reducere bredden.
import argparseparser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument (“- p”, "--print_string", help = "Udskriver det medfølgende argument.", standard =” En tilfældig streng.”)
args = parser.parse_args ()
udskrive (args.print_string)
At køre følgende kommando skal give dig det samme resultat som ovenfor:
$ ./prøve.py -p LinuxHint.comEksempel 3: Håndter et heltalargument
For at håndtere argumenter, der har brug for heltalværdier, skal du indstille nøgleordet "type" til "int" for at tillade validering og kaste fejl, hvis betingelsen ikke er opfyldt.
import argparseparser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("- p", "--print_string", help = "Udskriver det medfølgende argument.", type = int)
args = parser.parse_args ()
udskrive (args.print_string)
Prøv at køre følgende kommando:
$ ./prøve.py -p LinuxHint.comDu får en fejl som denne:
brug: test.py [-h] [-p PRINT_STRING]prøve.py: fejl: argument -p / - print_string: ugyldig int-værdi: 'LinuxHint.com '
Hvis du leverer en heltal, får du det korrekte resultat:
$ ./prøve.py -p 1000 1000Eksempel 4: Håndter sande og falske skifter
Du kan videregive argumenter uden nogen værdier for at behandle dem som ægte og falsk flag ved hjælp af argumentet "handling".
import argparseparser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("- p", "--print_string", help = "Udskriver det medfølgende argument.", action =" butik_sande ")
args = parser.parse_args ()
udskrive (args.print_string)
Kør kommandoen nedenfor for at få en simpel “Sand” som output:
$ ./prøve.py -pHvis du kører scriptet uden "-p" -argumentet, tildeles en "Falsk" -værdi i stedet. Værdien "store_true" for nøgleordet "handling" tildeler "print_string" -variablen en "Sand" -værdi, når argumentet "-p" udtrykkeligt er angivet, ellers tildeles variablen False.
Eksempel 5: Behandl argumentværdier som en liste
Hvis du vil hente flere værdier på én gang og gemme dem på listen, skal du angive "nargs" nøgleord i følgende format:
import argparseparser = argparse.ArgumentParser (beskrivelse = 'Et testprogram.')
parser.add_argument ("- p", "--print_string", help = "Udskriver det medfølgende argument.", nargs = '*')
args = parser.parse_args ()
udskrive (args.print_string)
Kør følgende kommando for at teste koden ovenfor:
$ ./prøve.py -p “a” “b”Du skal få noget output som dette:
['a', 'b']Konklusion
“Argparse” -modulet er ret omfattende med masser af muligheder for at finjustere adfærd for kommandolinjeapplikationer og analysere værdier, der leveres af brugerne. Disse eksempler berører kun den grundlæggende brug af “argparse” -modulet. Til avancerede og komplekse applikationer har du muligvis brug for forskellige implementeringer. Besøg den officielle dokumentation for en fuldstændig forklaring af modulet.