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

How Add Command Line Arguments Python Script



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

Chcete-li do skriptů Pythonu přidat argumenty, 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 spouštění skriptu nebo aplikace Python. Tyto analyzované argumenty jsou také kontrolovány modulem argparse, aby bylo zajištěno, že jsou správného typu. Chyby jsou vyvolány, pokud jsou v argumentech neplatné hodnoty.







Použití modulu argparse lze nejlépe pochopit na příkladech. Níže jsou uvedeny některé ukázky kódu, které vám pomohou začít s modulem argparse.



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

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



importargparse

analyzátor =argparse.ArgumentParser(popis='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 dodá krátký popis programu. Objekt ArgumentParser je potřebný k převodu hodnot argumentů příkazového řádku na datové typy, kterým rozumí Python. To se provádí metodou parse_args objektu ArgumentParser, jak je uvedeno v posledním příkazu.





Za předpokladu, že jste uložili ukázku kódu uvedenou výše v souboru s názvem test.py, spuštěním níže uvedených příkazů získáte zprávy nápovědy související s programem.

$ ./test.py-h

$ ./test.py-Pomoc

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



použití: test.py [-h]


Testovací program.


volitelné argumenty:

-h, --help zobrazit tuto zprávu nápovědy a ukončit ji

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

Příklad 2: Zpracování argumentu řetězce

Chcete -li přidat argumenty přijatelné skriptem pythonu, musíte použít metodu add_argument. Podívejte se na následující kód:

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('print_string', Pomoc='Vytiskne dodaný argument.')

args= analyzátor.parse_args()

tisk(args.print_string)

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

Všimněte si toho, že ve výchozím nastavení metoda add_argument považuje hodnoty získané z argumentů za řetězce, takže v tomto případě nemusíte typ výslovně určovat. Přidaným argumentům je přiřazena také výchozí hodnota Žádná, pokud není přepsána.

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

použití: test.py [-h] [print_string]


Testovací program.


poziční argumenty:

print_string Vytiskne zadaný argument.


volitelné argumenty:

-h, --help zobrazit tuto zprávu nápovědy a ukončit ji

Jeden z řádků ve výstupu říká poziční argumenty. Protože není definováno žádné klíčové slovo pro argument, v současné době je argument považován za poziční argument, kde má pořadí a pozice zadaného argumentu přímý účinek na program. Poziční 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í výchozího argumentu.

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('--print_string', Pomoc='Vytiskne dodaný argument.',výchozí=NAnáhodný tětiva.)

args= analyzátor.parse_args()

tisk(args.print_string)

Když nyní spustíte skript test.py bez jakéhokoli argumentu, měli byste získat náhodný řetězec. jako výstup. Volitelně můžete také použít klíčové slovo –print_string k vytištění libovolného řetězce podle vašeho výběru.

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

Volitelný argument můžete nastavit jako povinný pomocí dalšího argumentu required = True.

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

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument(-p, '--print_string', Pomoc='Vytiskne dodaný argument.',výchozí=NAnáhodný tětiva.)

args= analyzátor.parse_args()

tisk(args.print_string)

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

$ ./test.py-p Tip pro Linux.s

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

Abyste zvládli argumenty, které vyžadují celočíselné hodnoty, musíte nastavit klíčové slovo typu na int, aby bylo možné validovat a vyvolávat chyby v případě, že podmínka není splněna.

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('-p', '--print_string', Pomoc='Vytiskne dodaný argument.', typ=int)

args= analyzátor.parse_args()

tisk(args.print_string)

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

$ ./test.py-p Tip pro Linux.s

Měli byste dostat takovou chybu:

použití: test.py [-h] [-p PRINT_STRING]

test.py: error: argument -p/-print_string: invalid int value: 'LinuxHint.com'

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

$ ./test.py-p10001000

Příklad 4: Zpracování pravdivých a nepravdivých přepínačů

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

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('-p', '--print_string', Pomoc='Vytiskne dodaný argument.',akce='store_true')

args= analyzátor.parse_args()

tisk(args.print_string)

Spuštěním níže uvedeného příkazu získáte jako výstup jednoduchý True:

$ ./test.py-p

Pokud spustíte skript bez argumentu -p, bude místo něj přiřazena hodnota False. Hodnota store_true klíčového slova akce přiřadí proměnné print_string hodnotu True, kdykoli je argument -p výslovně zadán, jinak je proměnné přiřazena hodnota False.

Příklad 5: Zacházet s hodnotami argumentů jako se seznamem

Pokud chcete 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:

importargparse

analyzátor =argparse.ArgumentParser(popis='Testovací program.')

analyzátor.add_argument('-p', '--print_string', Pomoc='Vytiskne dodaný argument.',nargs='*')

args= analyzátor.parse_args()

tisk(args.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 takto:

['a', 'b']

Závěr

Modul argparse je docela komplexní s mnoha možnostmi, jak vyladit 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. Pro pokročilé a složité aplikace budete možná potřebovat různé implementace. Navštivte oficiální dokumentace pro úplné vysvětlení modulu.