Python

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

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

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 argparse
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" -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 argparse
parser = 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 argparse
parser = 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.com

Bemæ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 argparse
parser = 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.com

Eksempel 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 argparse
parser = 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.com

Du 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 1000

Eksempel 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 argparse
parser = 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 -p

Hvis 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 argparse
parser = 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.

Open Source-porte med kommercielle spilmotorer
Gratis, open source og cross-platform spilmotorgendringer kan bruges til at spille gamle såvel som nogle af de temmelig nylige spiltitler. Denne artik...
Bedste kommandoliniespil til Linux
Kommandolinjen er ikke kun din største allierede, når du bruger Linux, den kan også være kilde til underholdning, fordi du kan bruge den til at spille...
Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...