Krajta

Jak přidat argumenty příkazového řádku do skriptu Python?

Jak přidat argumenty příkazového řádku do skriptu Python?
Pokud jste vyvinuli skript nebo aplikaci Pythonu, která má být primárně spuštěna v emulátorech terminálu nebo dokonce v aplikacích GUI, pak přidání argumentů příkazového řádku může zlepšit jeho použitelnost, čitelnost kódu, strukturu aplikace a celkovou uživatelskou přívětivost aplikace pro koncoví uživatelé. Tyto argumenty příkazového řádku se také nazývají „options“ nebo „switche“ a fungují podobně jako argumenty, které obvykle vidíte v bash skriptech a dalších programech založených na C / C ++.

Chcete-li přidat argumenty do skriptů Pythonu, budete muset použít vestavěný modul s názvem „Argparse“. Jak název napovídá, analyzuje argumenty příkazového řádku použité při spuštění skriptu nebo aplikace Python. Tyto analyzované argumenty také kontroluje modul „argparse“, aby se ujistil, že mají správný „typ“. Chyby jsou vyvolány, pokud jsou v argumentech neplatné hodnoty.

Využití modulu argparse lze nejlépe pochopit na příkladech. Níže uvádíme několik ukázek kódu, které vám pomohou začít s modulem argparse.

Příklad 1: Generování argumentu nápovědy a zprávy

Zvažte ukázku kódu níže:

importovat argparse
parser = argparse.ArgumentParser (description = 'Testovací program.')
args = analyzátor.parse_args ()

První příkaz importuje modul „argparse“. Dále se vytvoří nová instance objektu „ArgumentParser“ a jako argument se uvede krátký popis programu. Objekt ArgumentParser je potřebný k převodu hodnot argumentů příkazového řádku na datové typy srozumitelné Pythonu. To se provádí metodou „parse_args“ objektu ArgumentParser, jak je znázorněno v posledním příkazu.

Za předpokladu, že jste ukázkový kód uvedený výše uložili do souboru s názvem „test.py ”, spuštěním níže uvedených příkazů se dostanete k nápovědě ke zprávám souvisejícím s programem.

$ ./test.py-h
$ ./test.py - pomoc

Měli byste získat nějaký výstup podobný tomuto:

použití: test.py [-h]
Volitelné argumenty testovacího programu:
-h, --help zobrazit tuto nápovědu a ukončit

Všimněte si, že do výše uvedeného ukázkového kódu nebyla přidána žádná logika pro zpracování analyzovaných argumentů a jejich převod na objekty. Proto se ve výstupu nezobrazují zprávy nápovědy pro jednotlivé argumenty. Jakmile ve svém programu přidáte logiku pro zpracování hodnot analyzovaných argumentů, začnou zprávy nápovědy zobrazovat popisy jednotlivých argumentů.

Příklad 2: Zpracování řetězcového argumentu

Chcete-li přidat argumenty přijatelné pro váš skript v Pythonu, musíte použít metodu „add_argument“. Podívejte se na následující kód:

importovat argparse
parser = argparse.ArgumentParser (description = 'Testovací program.')
analyzátor.add_argument ("print_string", help = "Vytiskne zadaný argument.")
args = analyzátor.parse_args ()
tisk (arg.print_string)

Byl přidán nový příkaz, který ukazuje použití metody „add_argument“. Jakýkoli argument přidaný při spuštění skriptu bude programem „ArgumentParser“ považován za objekt „print_string“.

Všimněte si, že ve výchozím nastavení metoda „add_argument“ zachází s hodnotami získanými z argumentů jako s řetězci, takže v tomto případě nemusíte explicitně specifikovat „typ“. Výchozí hodnota „Žádná“ je také přidělena přidaným argumentům, pokud není přepsána.

Ještě jednou se podívejte na zprávu nápovědy:

použití: test.py [-h] [řetězec_tisku]
Poziční argumenty testovacího programu:
print_string vytiskne zadaný argument
volitelné argumenty:
-h, --help zobrazit tuto nápovědu a ukončit

Jeden z řádků na výstupu říká „poziční argumenty“. Protože není definováno žádné klíčové slovo pro argument, je v současné době argument považován za „poziční argument“, kde pořadí a pozice zadaného argumentu má přímý účinek na program. Povinné argumenty jsou také povinné, pokud ručně nezměníte jejich chování.

Chcete-li definovat a analyzovat volitelné argumenty, můžete použít „-“ (dvojitá pomlčka) a změnit jejich výchozí hodnoty pomocí argumentu „výchozí“.

importovat argparse
parser = argparse.ArgumentParser (description = 'Testovací program.')
analyzátor.add_argument ("- print_string", help = "Vytiskne zadaný argument.", default =” Náhodný řetězec.”)
args = analyzátor.parse_args ()
tisk (arg.print_string)

Nyní, když spustíte „test.py “skript bez jakéhokoli argumentu, měli byste dostat„ Náhodný řetězec.“Jako výstup. Můžete také volitelně použít klíčové slovo „-print_string“ k tisku libovolného řetězce podle vašeho výběru.

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

Upozorňujeme, že volitelný argument můžete učinit povinným pomocí dalšího argumentu „required = True“.

Nakonec můžete také definovat zkratkové verze argumentu pomocí „-“ (jedna pomlčka), abyste snížili výřečnost.

importovat argparse
parser = argparse.ArgumentParser (description = 'Testovací program.')
analyzátor.add_argument (“- p”, "--print_string", help = "Vytiskne zadaný argument.", default =” Náhodný řetězec.”)
args = analyzátor.parse_args ()
tisk (arg.print_string)

Spuštěním následujícího příkazu byste měli získat stejný výsledek jako výše:

$ ./test.py -p LinuxHint.com

Příklad 3: Zpracování celočíselného argumentu

Chcete-li zpracovat argumenty, které vyžadují celočíselné hodnoty, je třeba nastavit klíčové slovo „type“ na „int“, aby bylo možné ověřit a vyvolat chyby v případě, že podmínka není splněna.

importovat argparse
parser = argparse.ArgumentParser (description = 'Testovací program.')
analyzátor.add_argument ("- p", "--print_string", help = "Vypíše zadaný argument.", typ = int)
args = analyzátor.parse_args ()
tisk (arg.print_string)

Zkuste spustit následující příkaz:

$ ./test.py -p LinuxHint.com

Měla by se zobrazit chyba, jako je tato:

použití: test.py [-h] [-p PRINT_STRING]
test.py: error: argument -p / - print_string: neplatná int hodnota: 'LinuxHint.com '

Zadáním celočíselné hodnoty získáte správný výsledek:

$ ./test.py -p 1000 1000

Příklad 4: Zacházení s True a False Toggles

Pomocí argumentu „akce“ můžete předat argumenty bez jakýchkoli hodnot a považovat je za příznaky True a False.

importovat argparse
parser = argparse.ArgumentParser (description = 'Testovací program.')
analyzátor.add_argument ("- p", "--print_string", help = "Vypíše zadaný argument.", action =" store_true ")
args = analyzátor.parse_args ()
tisk (arg.print_string)

Spuštěním následujícího příkazu získáte jako výstup jednoduché „True“:

$ ./test.py -p

Pokud spustíte skript bez argumentu „-p“, bude místo toho přiřazena hodnota „False“. Hodnota „store_true“ klíčového slova „action“ přiřadí hodnotě „True“ proměnné „print_string“, kdykoli je výslovně uveden argument „-p“, jinak je proměnné přiřazena hodnota False.

Příklad 5: Považovat hodnoty argumentů za seznam

Chcete-li získat více hodnot najednou a uložit je do seznamu, musíte zadat klíčové slovo „nargs“ v následujícím formátu:

importovat argparse
parser = argparse.ArgumentParser (description = 'Testovací program.')
analyzátor.add_argument ("- p", "--print_string", help = "Vypíše zadaný argument.", nargs = '*')
args = analyzátor.parse_args ()
tisk (arg.print_string)

Spuštěním následujícího příkazu otestujte výše uvedený kód:

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

Měli byste získat nějaký výstup, jako je tento:

['a', 'b']

Závěr

Modul „argparse“ je docela komplexní a má spoustu možností, jak vylepšit chování aplikací příkazového řádku a analyzovat hodnoty zadané uživatelem. Tyto příklady se dotýkají pouze základního použití modulu „argparse“. U pokročilých a složitých aplikací možná budete potřebovat různé implementace. Úplné vysvětlení modulu naleznete v oficiální dokumentaci.

Hry Nejlepší hry pro ruční sledování
Nejlepší hry pro ruční sledování
Oculus Quest nedávno představil skvělou myšlenku ručního sledování bez ovladačů. S neustále se zvyšujícím počtem her a aktivit, které provádějí podpor...
Hry Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Jak zobrazit překrytí OSD v linuxových aplikacích a hrách na celou obrazovku
Hraní her na celou obrazovku nebo používání aplikací v režimu celé obrazovky bez rozptýlení vás mohou odříznout od příslušných systémových informací v...
Hry Top 5 karet pro zachycení hry
Top 5 karet pro zachycení hry
Všichni jsme viděli a milovali streamování her na YouTube. PewDiePie, Jakesepticye a Markiplier jsou jen někteří z nejlepších hráčů, kteří vydělali mi...