Python

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

Как да добавя аргументи от командния ред към скрипт на Python?
Ако сте разработили скрипт или приложение на Python, предназначени да се изпълняват предимно в емулаторите на терминали или дори в приложенията с графичен интерфейс, добавянето на аргументи от командния ред може да подобри неговата използваемост, четливост на кода, структура на приложението и цялостната лекота на приложението за крайните потребители. Тези аргументи от командния ред се наричат ​​още „опции“ или „превключватели“ и работят подобно на аргументите, които обикновено виждате в 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 покажете това съобщение за помощ и излезте

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

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

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

Сега, когато стартирате „теста.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”. За разширени и сложни приложения може да се нуждаете от различни внедрения. Посетете официалната документация за пълно обяснение на модула.

Безплатни и игри с отворен код за разработване на Linux игри
Тази статия ще обхване списък с безплатни двигатели за игри с отворен код, които могат да се използват за разработване на 2D и 3D игри на Linux. Същес...
Урок Сянка на Tomb Raider за Linux
Shadow of the Tomb Raider е дванадесетото допълнение към поредицата Tomb Raider - франчайз за екшън-приключенска игра, създаден от Eidos Montreal. Игр...
Как да увеличите FPS в Linux?
FPS означава Кадри в секунда. Задачата на FPS е да измерва честотата на кадрите при възпроизвеждане на видео или игрални изпълнения. С прости думи бро...