Piton

Kako dodati argumente naredbenog retka u Python skriptu

Kako dodati argumente naredbenog retka u Python skriptu

Ako ste razvili Python skriptu ili aplikaciju namijenjenu primarnom pokretanju u terminalskim emulatorima ili čak GUI aplikacijama, dodavanje argumenata naredbenog retka može poboljšati njezinu iskoristivost, čitljivost koda, strukturu aplikacije i ukupnu korisničku prihvatljivost aplikacije za krajnje korisnike. Ti se argumenti naredbenog retka nazivaju i "opcije" ili "prekidači" i rade slično argumentima koje obično vidite u bash skriptama i drugim programima temeljenim na C / C ++.

Da biste dodali argumente u Python skripte, morat ćete upotrijebiti ugrađeni modul pod nazivom "argparse". Kao što i samo ime govori, analizira argumente naredbenog retka korištene prilikom pokretanja Python skripte ili aplikacije. Ove raščlanjene argumente također provjerava modul "argparse" kako bi se osiguralo da su odgovarajućeg "tipa". Pogreške se pojavljuju ako u argumentima postoje nevaljane vrijednosti.

Korištenje argparse modula najbolje se može razumjeti kroz primjere. Ispod je nekoliko primjera koda koji će vas pokrenuti s modulom argparse.

Primjer 1: Generirajte argument i pomoć

Razmotrite uzorak koda u nastavku:

uvoz argparse
raščlanjivač = argparse.ArgumentParser (description = 'Testni program.')
args = parser.analizirati_args ()

Prva izjava uvozi modul "argparse". Zatim se kreira nova instanca objekta “ArgumentParser” i kao argument se daje kratki opis programa. Objekt ArgumentParser potreban je za pretvaranje vrijednosti argumenata naredbenog retka u vrste podataka koje Python razumije. To se radi metodom “parse_args” objekta ArgumentParser, kao što je prikazano u posljednjoj izjavi.

Pod pretpostavkom da ste spremili gore navedeni uzorak koda u datoteku nazvanu „test.py ”, izvođenjem naredbi u nastavku dobit ćete poruke pomoći povezane s programom.

$ ./test.py-h
$ ./test.py - pomoć

Trebali biste dobiti neke slične rezultate:

upotreba: test.py [-h]
Ispitni program.
neobavezni argumenti:
-h, --help prikaži ovu poruku pomoći i izađi

Imajte na umu da u gore spomenuti uzorak koda nije dodana logika za rukovanje raščlanjenim argumentima i njihovo pretvaranje u objekte. Stoga se poruke pomoći za pojedinačne argumente ne prikazuju u izlazu. Jednom kada dodate logiku za rukovanje vrijednostima raščlanjenih argumenata u svoj program, poruke pomoći počet će prikazivati ​​opis pojedinačnih argumenata.

Primjer 2: Obrada argumenta niza

Da biste dodali argumente prihvatljive vašom python skriptom, trebate koristiti metodu "add_argument". Pogledajte sljedeći kod:

uvoz argparse
raščlanjivač = argparse.ArgumentParser (description = 'Testni program.')
parser.add_argument ("print_string", help = "Ispisuje isporučeni argument.")
args = parser.analizirati_args ()
ispis (args.print_string)

Dodana je nova izjava koja pokazuje upotrebu metode "add_argument". Svaki argument dodan prilikom pokretanja skripte tretirat će kao objekt "print_string" od strane "ArgumentParser".

Imajte na umu da metoda "add_argument" prema zadanim postavkama vrijednosti preuzete iz argumenata tretira kao nizove, tako da u ovom slučaju ne morate izričito navesti "tip". Zadana vrijednost "Ništa" također se dodjeljuje dodanim argumentima, osim ako je poništeno.

Još jednom pogledajte poruku pomoći:

upotreba: test.py [-h] [print_string]
Ispitni program.
pozicijski argumenti:
print_string Ispisuje isporučeni argument.
neobavezni argumenti:
-h, --help prikaži ovu poruku pomoći i izađi

Jedan od redaka u izlazu kaže "pozicijski argumenti". Budući da nije definirana nijedna ključna riječ za argument, trenutno se argument tretira kao "pozicijski argument" gdje redoslijed i položaj isporučenog argumenta imaju izravan učinak na program. Pozicijski argumenti također su obvezni, osim ako ručno ne promijenite njihovo ponašanje.

Da biste definirali i raščlanili fakultativne argumente, možete upotrijebiti "-" (dvostruka crtica) i promijeniti njihove zadane vrijednosti pomoću argumenta "zadani".

uvoz argparse
raščlanjivač = argparse.ArgumentParser (description = 'Testni program.')
parser.add_argument ("- print_string", help = "Ispisuje isporučeni argument.", default =" Slučajni niz.")
args = parser.analizirati_args ()
ispis (args.print_string)

Sada kada pokrenete "test.py "skripta bez ikakvog argumenta, trebali biste dobiti" Slučajni niz.”Kao izlaz. Po želji također možete upotrijebiti ključnu riječ "-print_string" za ispis bilo kojeg niza po vašem izboru.

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

Imajte na umu da neobavezni argument možete učiniti obveznim upotrebom dodatnog argumenta "required = True".

I na kraju, također možete definirati skraćene verzije argumenta pomoću "-" (jedna crtica) kako biste smanjili opširnost.

uvoz argparse
raščlanjivač = argparse.ArgumentParser (description = 'Testni program.')
parser.add_argument ("- p", "--print_string", help = "Ispisuje isporučeni argument.", default =" Slučajni niz.")
args = parser.analizirati_args ()
ispis (args.print_string)

Pokretanje sljedeće naredbe treba vam dati isti rezultat kao gore:

$ ./test.py -p LinuxHint.com

Primjer 3: Obrada cjelovitog argumenta

Da biste obrađivali argumente koji trebaju cjelobrojne vrijednosti, morate ključnu riječ „type“ postaviti na „int“ kako biste omogućili provjeru valjanosti i pogreške u slučaju da uvjet nije zadovoljen.

uvoz argparse
raščlanjivač = argparse.ArgumentParser (description = 'Testni program.')
parser.add_argument ("- p", "--print_string", help = "Ispisuje isporučeni argument.", upišite = int)
args = parser.analizirati_args ()
ispis (args.print_string)

Pokušajte pokrenuti sljedeću naredbu:

$ ./test.py -p LinuxHint.com

Trebali biste dobiti pogrešku poput ove:

upotreba: test.py [-h] [-p PRINT_STRING]
test.py: pogreška: argument -p / - print_string: nevaljana vrijednost int: 'LinuxHint.com '

Ako navedete cijelu vrijednost, dobit ćete točan rezultat:

$ ./test.py -p 1000 1000

Primjer 4: Rukovanje točnim i lažnim prekidačima

Možete prosljeđivati ​​argumente bez ikakvih vrijednosti da biste ih tretirali kao oznake True i False koristeći argument "action".

uvoz argparse
raščlanjivač = argparse.ArgumentParser (description = 'Testni program.')
parser.add_argument ("- p", "--print_string", help = "Ispisuje isporučeni argument.", action =" store_true ")
args = parser.analizirati_args ()
ispis (args.print_string)

Pokrenite naredbu u nastavku da biste kao izlaz dobili jednostavnu "True":

$ ./test.py -p

Ako skriptu pokrenete bez argumenta “-p”, umjesto nje dodijelit će se vrijednost “False”. Vrijednost "store_true" ključne riječi "action" dodjeljuje vrijednost "True" varijabli "print_string" kad god je izričito naveden argument "-p", inače se varijabli dodjeljuje False.

Primjer 5: Vrijednosti argumenta tretirajte kao popis

Ako želite dobiti više vrijednosti odjednom i pohraniti ih na popis, morate navesti ključnu riječ "nargs" u sljedećem formatu:

uvoz argparse
raščlanjivač = argparse.ArgumentParser (description = 'Testni program.')
parser.add_argument ("- p", "--print_string", help = "Ispisuje isporučeni argument.", nargs = '*')
args = parser.analizirati_args ()
ispis (args.print_string)

Pokrenite sljedeću naredbu za testiranje gornjeg koda:

$ ./test.py -p "a" "b"

Trebali biste dobiti ovakav izlaz:

['a', 'b']

Zaključak

Modul "argparse" prilično je sveobuhvatan s mnoštvom opcija za prilagođavanje ponašanja aplikacija naredbenog retka i raščlanjivanje vrijednosti koje isporučuju korisnici. Ovi se primjeri dotiču samo osnovne upotrebe modula "argparse". Za napredne i složene aplikacije možda će vam trebati različite implementacije. Posjetite službenu dokumentaciju za cjelovito objašnjenje modula.

Kako koristiti AutoKey za automatizaciju Linux igara
AutoKey je uslužni program za automatizaciju radne površine za Linux i X11, programiran na Python 3, GTK i Qt. Koristeći njegovu skriptiranje i MACRO ...
Kako prikazati brojač FPS-a u Linux igrama
Linux gaming dobio je velik poticaj kada je Valve najavio Linux podršku za Steam klijent i njihove igre 2012. godine. Od tada su mnoge AAA i indie igr...
Kako preuzeti i igrati Sid Meier's Civilization VI na Linuxu
Uvod u igru Civilization 6 moderan je pogled na klasični koncept predstavljen u seriji igara Age of Empires. Ideja je bila prilično jednostavna; započ...