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 argparseparser = 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 argparseparser = 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 argparseparser = 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.comLinuxTip.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 argparseparser = 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.comPří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 argparseparser = 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.comMě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 1000Pří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 argparseparser = 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 -pPokud 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 argparseparser = 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.