Hur man lägger till kommandoradsargument i ett Python -skript

How Add Command Line Arguments Python Script



Om du har utvecklat ett Python -skript eller ett program som är avsett att främst köras i terminalemulatorer eller till och med GUI -appar kan tillägg av kommandoradsargument förbättra dess användbarhet, kodläsbarhet, applikationsstruktur och övergripande användarvänlighet i applikationen för slutanvändarna. Dessa kommandoradsargument kallas också alternativ eller switchar och fungerar på samma sätt som argument som du vanligtvis ser i bash -skript och andra C / C ++ - baserade program.

För att lägga till argument till Python-skript måste du använda en inbyggd modul som heter argparse. Som namnet antyder analyserar den kommandoradsargument som används när ett Python -skript eller program startas. Dessa analyserade argument kontrolleras också av argparse -modulen för att säkerställa att de är av rätt typ. Fel uppstår om det finns ogiltiga värden i argument.







Användningen av argparse -modulen kan bäst förstås genom exempel. Nedan följer några kodprover som kommer att komma igång med argparse -modulen.



Exempel 1: Generera hjälpargument och meddelande

Tänk på kodprovet nedan:



importeraargparse

parser =argparse.ArgumentParser(beskrivning='Ett testprogram.')

args= parser.parse_args()

Det första uttalandet importerar argparse -modulen. Därefter skapas en ny instans av ArgumentParser -objektet och en kort beskrivning för programmet tillhandahålls som ett argument. ArgumentParser -objektet behövs för att konvertera kommandoradsargumentvärden till datatyper som förstås av Python. Detta görs med parse_args -metoden för ArgumentParser -objektet, som visas i det senaste uttalandet.





Om du antar att du har sparat kodprovet som anges ovan i en fil med namnet test.py får du hjälpmeddelanden relaterade till programmet när du kör kommandona nedan.

$ ./testa.py-h

$ ./testa.py-hjälp

Du bör få en viss utmatning som liknar detta:



användning: test.py [-h]


Ett testprogram.


valfria argument:

-h, --hjälp visa detta hjälpmeddelande och avsluta

Observera att ingen logik för att hantera analyserade argument och konvertera dem till objekt har lagts till i kodprovet som nämns ovan. Därför visas inte hjälpmeddelanden för enskilda argument i utdata. När du har lagt till logik för att hantera värden för analyserade argument i ditt program, kommer hjälpmeddelanden att börja visa beskrivning för enskilda argument.

Exempel 2: Hantera ett strängargument

För att lägga till argument som kan accepteras av ditt python -skript måste du använda metoden add_argument. Ta en titt på följande kod:

importeraargparse

parser =argparse.ArgumentParser(beskrivning='Ett testprogram.')

parser.add_argument('print_string', hjälp='Skriver ut det medföljande argumentet.')

args= parser.parse_args()

skriva ut(args.print_string)

Ett nytt uttalande har lagts till som visar användning av metoden add_argument. Alla argument som läggs till när manuset startas kommer att behandlas som ett print_string -objekt av ArgumentParser.

Observera att som standard behandlar add_argument -metoden värden som hämtats från argument som strängar, så du behöver inte uttryckligen ange typen i det här fallet. Ett tilläggsargument tilldelas också ett standardvärde på None om det inte åsidosätts.

Återigen ta en titt på hjälpmeddelandet:

användning: test.py [-h] [print_string]


Ett testprogram.


positionella argument:

print_string Skriver ut det medföljande argumentet.


valfria argument:

-h, --hjälp visa detta hjälpmeddelande och avsluta

En av raderna i utdata säger positionella argument. Eftersom inget nyckelord för argument har definierats, behandlas argumentet för närvarande som ett positionsargument där ordningen och positionen för det angivna argumentet har direkt effekt på programmet. Positioneringsargument är också obligatoriska, såvida du inte manuellt ändrar deras beteende.

För att definiera och analysera valfria argument kan du använda - (dubbelstreck) och ändra standardvärdena med standardargumentet.

importeraargparse

parser =argparse.ArgumentParser(beskrivning='Ett testprogram.')

parser.add_argument('--print_string', hjälp='Skriver ut det medföljande argumentet.',standard=TILLslumpmässig sträng.)

args= parser.parse_args()

skriva ut(args.print_string)

Nu när du kör test.py -skriptet utan argument bör du få en slumpmässig sträng. som utgång. Du kan också använda nyckelordet –print_string för att skriva ut valfri sträng.

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

Observera att du kan göra ett valfritt argument obligatoriskt genom att använda ett ytterligare obligatoriskt = True -argument.

Slutligen kan du också definiera stenografiska versioner av argumentet med - (enda streck) för att minska verbositet.

importeraargparse

parser =argparse.ArgumentParser(beskrivning='Ett testprogram.')

parser.add_argument(-s, '--print_string', hjälp='Skriver ut det medföljande argumentet.',standard=TILLslumpmässig sträng.)

args= parser.parse_args()

skriva ut(args.print_string)

Att köra följande kommando bör ge dig samma resultat som ovan:

$ ./testa.py-p LinuxHint.med

Exempel 3: Hantera ett heltalsargument

För att hantera argument som behöver heltalsvärden måste du ange typ nyckelordet int för att tillåta validerings- och kastfel om villkoret inte uppfylls.

importeraargparse

parser =argparse.ArgumentParser(beskrivning='Ett testprogram.')

parser.add_argument('-p', '--print_string', hjälp='Skriver ut det medföljande argumentet.', typ=int)

args= parser.parse_args()

skriva ut(args.print_string)

Prova att köra följande kommando:

$ ./testa.py-p LinuxHint.med

Du bör få ett felmeddelande så här:

användning: test.py [-h] [-p PRINT_STRING]

test.py: fel: argument -p/-print_string: ogiltigt int-värde: 'LinuxHint.com'

Om du anger ett heltal får du rätt resultat:

$ ./testa.py-s10001000

Exempel 4: Hantera True and False Toggles

Du kan skicka argument utan värden för att behandla dem som sanna och falska flaggor med hjälp av åtgärdsargumentet.

importeraargparse

parser =argparse.ArgumentParser(beskrivning='Ett testprogram.')

parser.add_argument('-p', '--print_string', hjälp='Skriver ut det medföljande argumentet.',handling='store_true')

args= parser.parse_args()

skriva ut(args.print_string)

Kör kommandot nedan för att få en enkel True som output:

$ ./testa.py-s

Om du kör skriptet utan -p -argumentet tilldelas istället ett falskt värde. Värdet store_true för åtgärdssökordet tilldelar variabeln print_string ett sant värde när -p -argumentet uttryckligen anges, annars tilldelas variabeln False.

Exempel 5: Behandla argumentvärden som en lista

Om du vill få flera värden samtidigt och lagra dem i listan måste du ange nargs -nyckelord i följande format:

importeraargparse

parser =argparse.ArgumentParser(beskrivning='Ett testprogram.')

parser.add_argument('-p', '--print_string', hjälp='Skriver ut det medföljande argumentet.',nargs='*')

args= parser.parse_args()

skriva ut(args.print_string)

Kör följande kommando för att testa koden ovan:

$ ./testa.py-p a b

Du bör få lite utmatning så här:

['a', 'b']

Slutsats

Argparse -modulen är ganska omfattande med massor av alternativ för att justera beteendet hos kommandoradsapplikationer och analysera användarlevererade värden. Dessa exempel berör endast den grundläggande användningen av argparse -modulen. För avancerade och komplexa applikationer kan du behöva olika implementeringar. Besök officiell dokumentation för en fullständig förklaring av modulen.