Python

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

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

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

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

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

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

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

внос argparse
парсер = argparse.ArgumentParser (description = 'Тестова програма.')
args = парсер.parse_args ()

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

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

$ ./тест.py -h
$ ./тест.py --помощ

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

употреба: тест.py [-h]
Тестова програма.
незадължителни аргументи:
-h, --help покажете това съобщение за помощ и излезте

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

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

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

внос argparse
парсер = argparse.ArgumentParser (description = 'Тестова програма.')
парсер.add_argument ("print_string", help = "Отпечатва предоставения аргумент.")
args = парсер.parse_args ()
печат (аргументи.print_string)

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

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

За пореден път разгледайте съобщението за помощ:

употреба: тест.py [-h] [print_string]
Тестова програма.
позиционни аргументи:
print_string Отпечатва предоставения аргумент.
незадължителни аргументи:
-h, --help покажете това съобщение за помощ и излезте

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

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

внос argparse
парсер = argparse.ArgumentParser (description = 'Тестова програма.')
парсер.add_argument ("- print_string", help = "Отпечатва предоставения аргумент.", по подразбиране =" Произволен низ.”)
args = парсер.parse_args ()
печат (аргументи.print_string)

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

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

Имайте предвид, че можете да направите незадължителен аргумент задължителен, като използвате допълнителен аргумент „задължително = вярно“.

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

внос argparse
парсер = argparse.ArgumentParser (description = 'Тестова програма.')
парсер.add_argument (“- p”, “--print_string”, help = “Отпечатва предоставения аргумент.", по подразбиране =" Произволен низ.”)
args = парсер.parse_args ()
печат (аргументи.print_string)

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

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

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

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

внос argparse
парсер = argparse.ArgumentParser (description = 'Тестова програма.')
парсер.add_argument ("- p", "--print_string", help = "Отпечатва предоставения аргумент.", тип = int)
args = парсер.parse_args ()
печат (аргументи.print_string)

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

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

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

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

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

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

Пример 4: Обработвайте верни и неверни превключватели

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

внос argparse
парсер = argparse.ArgumentParser (description = 'Тестова програма.')
парсер.add_argument ("- p", "--print_string", help = "Отпечатва предоставения аргумент.", action =" store_true ")
args = парсер.parse_args ()
печат (аргументи.print_string)

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

$ ./тест.py -p

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

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

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

внос argparse
парсер = argparse.ArgumentParser (description = 'Тестова програма.')
парсер.add_argument ("- p", "--print_string", help = "Отпечатва предоставения аргумент.", nargs = '*')
args = парсер.parse_args ()
печат (аргументи.print_string)

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

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

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

['a', 'b']

Заключение

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

Курсорът скача или се движи произволно, докато пишете в Windows 10
Ако установите, че курсорът на вашата мишка скача или се движи самостоятелно, автоматично, произволно, докато пишете в лаптоп или компютър на Windows,...
Как да обърнете посоката на превъртане на мишката и тъчпада в Windows 10
Мишка и Тъчпадs не само правят изчисленията лесни, но и по-ефективни и отнемат по-малко време. Не можем да си представим живот без тези устройства, но...
Как да промените курсора на мишката и размера на курсора, цвета и схемата в Windows 10
Показалецът на мишката и курсорът в Windows 10 са много важни аспекти на операционната система. Това може да се каже и за други операционни системи, т...