Как да добавите аргументи от командния ред към скрипт на Python

How Add Command Line Arguments Python Script



Ако сте разработили скрипт или приложение на Python, предназначено да се изпълнява предимно в терминални емулатори или дори приложения с графичен интерфейс, добавянето на аргументи от командния ред може да подобри неговата използваемост, четливост на кода, структурата на приложението и цялостното удобство на потребителя на приложението за крайните потребители. Тези аргументи от командния ред също се наричат ​​опции или превключватели и работят подобно на аргументите, които обикновено виждате в bash скриптове и други базирани на C / C ++ програми.

За да добавите аргументи към скриптове на Python, ще трябва да използвате вграден модул с име argparse. Както подсказва името, той анализира аргументите на командния ред, използвани при стартиране на скрипт или приложение на Python. Тези анализирани аргументи също се проверяват от модула argparse, за да се гарантира, че са от подходящ тип. Грешки се появяват, ако в аргументите има невалидни стойности.







Използването на модула argparse може да се разбере най -добре чрез примери. По -долу са някои примерни кодове, които ще ви помогнат да започнете с модула argparse.



Пример 1: Генериране на помощни аргументи и съобщения

Помислете за примерния код по -долу:



вносargparse

анализатор =argparse.ArgumentParser(описание='Тестова програма.')

аргументи= анализатор.parse_args()

Първият израз импортира модула argparse. След това се създава нов екземпляр на ArgumentParser обект и кратко описание за програмата се предоставя като аргумент. Обектът ArgumentParser е необходим за преобразуване на стойностите на аргументите на командния ред в типове данни, разбираеми от Python. Това се прави чрез метода parse_args на обекта ArgumentParser, както е показано в последното изявление.





Ако приемем, че сте запазили кода, посочен по -горе, във файл с име test.py, изпълнението на командите по -долу ще ви помогне да получите помощни съобщения, свързани с програмата.

$ ./тест.py

$ ./тест.py-помогне

Трябва да получите изход, подобен на този:



употреба: test.py [-h]


Тестова програма.


незадължителни аргументи:

-h, --help покажете това помощно съобщение и излезте

Обърнете внимание, че не е добавена логика за обработка на анализирани аргументи и преобразуването им в обекти към кодовата проба, спомената по -горе. Следователно помощните съобщения за отделни аргументи не се показват в изхода. След като добавите логика за обработка на стойности на анализирани аргументи във вашата програма, съобщенията за помощ ще започнат да показват описание за отделни аргументи.

Пример 2: Обработете низов аргумент

За да добавите аргументи, приемливи от вашия скрипт на python, трябва да използвате метода add_argument. Разгледайте следния код:

вносargparse

анализатор =argparse.ArgumentParser(описание='Тестова програма.')

анализатор.add_argument('print_string', помогне=„Отпечатва предоставения аргумент.“)

аргументи= анализатор.parse_args()

печат(аргументи.print_string)

Добавено е ново изявление, показващо използването на метода add_argument. Всеки аргумент, добавен при стартиране на скрипта, ще се третира като обект print_string от ArgumentParser.

Обърнете внимание, че по подразбиране методът add_argument третира стойностите, извлечени от аргументите, като низове, така че не е нужно изрично да посочвате типа в този случай. Стойност по подразбиране None също се присвоява на добавените аргументи, освен ако не е заменена.

Отново погледнете помощното съобщение:

употреба: test.py [-h] [print_string]


Тестова програма.


позиционни аргументи:

print_string Отпечатва предоставения аргумент.


незадължителни аргументи:

-h, --help покажете това помощно съобщение и излезте

Един от редовете в изхода казва позиционни аргументи. Тъй като не е дефинирана ключова дума за аргумент, в момента аргументът се третира като позиционен аргумент, където редът и позицията на предоставения аргумент имат пряк ефект върху програмата. Аргументите за позицията също са задължителни, освен ако не промените ръчно тяхното поведение.

За да дефинирате и анализирате незадължителни аргументи, можете да използвате - (двойно тире) и да промените стойностите им по подразбиране, като използвате аргумента по подразбиране.

вносargparse

анализатор =argparse.ArgumentParser(описание='Тестова програма.')

анализатор.add_argument('--print_string', помогне=„Отпечатва предоставения аргумент.“,по подразбиране=ДА СЕслучаен низ.)

аргументи= анализатор.parse_args()

печат(аргументи.print_string)

Сега, когато стартирате скрипт test.py без никакъв аргумент, трябва да получите произволен низ. като изход. Можете също така по избор да използвате ключовата дума –print_string, за да отпечатате произволен низ по ваш избор.

$ ./тест.py--print_string LinuxHint.сLinuxHint.com

Обърнете внимание, че можете да направите незадължителен аргумент задължителен, като използвате допълнителен аргумент required = True.

И накрая, можете също да дефинирате стенографични версии на аргумента, като използвате - (единична тире), за да намалите многословието.

вносargparse

анализатор =argparse.ArgumentParser(описание='Тестова програма.')

анализатор.add_argument(-стр, '--print_string', помогне=„Отпечатва предоставения аргумент.“,по подразбиране=ДА СЕслучаен низ.)

аргументи= анализатор.parse_args()

печат(аргументи.print_string)

Изпълнението на следната команда трябва да ви даде същия резултат, както по -горе:

$ ./тест.py-p LinuxHint.с

Пример 3: Обработете целочисления аргумент

За да се справите с аргументи, които се нуждаят от целочислени стойности, трябва да зададете ключовата дума type на int, за да разрешите валидиране и изхвърляне на грешки в случай, че условието не е изпълнено.

вносargparse

анализатор =argparse.ArgumentParser(описание='Тестова програма.')

анализатор.add_argument('-p', '--print_string', помогне=„Отпечатва предоставения аргумент.“, Тип=int)

аргументи= анализатор.parse_args()

печат(аргументи.print_string)

Опитайте да изпълните следната команда:

$ ./тест.py-p LinuxHint.с

Трябва да получите такава грешка:

употреба: test.py [-h] [-p PRINT_STRING]

test.py: грешка: аргумент -p/-print_string: невалидна int стойност: 'LinuxHint.com'

Предоставянето на цяло число ще ви даде правилен резултат:

$ ./тест.py-стр10001000

Пример 4: Работете с True и False Toggles

Можете да предавате аргументи без никакви стойности, за да ги третирате като флагове True и False, като използвате аргумента action.

вносargparse

анализатор =argparse.ArgumentParser(описание='Тестова програма.')

анализатор.add_argument('-p', '--print_string', помогне=„Отпечатва предоставения аргумент.“,действие='store_true')

аргументи= анализатор.parse_args()

печат(аргументи.print_string)

Изпълнете командата по -долу, за да получите просто True като изход:

$ ./тест.py-стр

Ако стартирате скрипта без аргумента -p, вместо това ще бъде присвоена стойност False. Стойността store_true на ключовата дума action присвоява True стойност на print_string променливата винаги, когато аргументът -p е изрично посочен, в противен случай False се присвоява на променливата.

Пример 5: Третирайте стойностите на аргументите като списък

Ако искате да получите няколко стойности наведнъж и да ги съхранявате в списък, трябва да предоставите ключова дума nargs в следния формат:

вносargparse

анализатор =argparse.ArgumentParser(описание='Тестова програма.')

анализатор.add_argument('-p', '--print_string', помогне=„Отпечатва предоставения аргумент.“,разказва='*')

аргументи= анализатор.parse_args()

печат(аргументи.print_string)

Изпълнете следната команда, за да тествате горния код:

$ ./тест.py-p a b

Трябва да получите някакъв изход като този:

['a', 'b']

Заключение

Модулът argparse е доста изчерпателен с множество опции за промяна на поведението на приложенията на командния ред и анализиране на предоставените от потребителя стойности. Тези примери засягат само основното използване на модула argparse. За напреднали и сложни приложения може да се нуждаете от различни реализации. Посетете официална документация за пълно обяснение на модула.