Python

Как добавить аргументы командной строки в скрипт Python

Как добавить аргументы командной строки в скрипт Python

Если вы разработали сценарий или приложение Python, предназначенное для запуска в основном в эмуляторах терминала или даже в приложениях с графическим интерфейсом пользователя, добавление аргументов командной строки может улучшить его удобство использования, читаемость кода, структуру приложения и общее удобство использования приложения для конечных пользователей. Эти аргументы командной строки также называются «параметрами» или «переключателями» и работают аналогично аргументам, которые вы обычно видите в сценариях bash и других программах на C / C ++.

Чтобы добавить аргументы в скрипты Python, вам нужно будет использовать встроенный модуль с именем «argparse». Как следует из названия, он анализирует аргументы командной строки, используемые при запуске скрипта или приложения Python. Эти проанализированные аргументы также проверяются модулем argparse, чтобы убедиться, что они имеют правильный «тип». Ошибки возникают, если в аргументах есть недопустимые значения.

Использование модуля argparse можно лучше всего понять на примерах. Ниже приведены несколько примеров кода, которые помогут вам начать работу с модулем argparse.

Пример 1: Создание аргумента и сообщения справки

Рассмотрим пример кода ниже:

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

Первый оператор импортирует модуль «argparse». Затем создается новый экземпляр объекта «ArgumentParser», и в качестве аргумента предоставляется краткое описание программы. Объект ArgumentParser необходим для преобразования значений аргументов командной строки в типы данных, понятные Python. Это делается методом parse_args объекта ArgumentParser, как показано в последнем утверждении.

Предполагая, что вы сохранили пример кода, указанный выше, в файле с именем «test.py », запустив приведенные ниже команды, вы получите справочные сообщения, связанные с программой.

$ ./контрольная работа.py -h
$ ./контрольная работа.py --help

Вы должны получить примерно такой результат:

использование: тест.ру [-h]
Тестовая программа.
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти

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

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

Чтобы добавить аргументы, приемлемые для вашего скрипта Python, вам необходимо использовать метод «add_argument». Взгляните на следующий код:

import argparse
парсер = argparse.ArgumentParser (description = 'Тестовая программа.')
парсер.add_argument ("print_string", help = "Печатает предоставленный аргумент.")
args = парсер.parse_args ()
печать (аргументы.print_string)

Добавлен новый оператор, показывающий использование метода «add_argument». Любой аргумент, добавленный при запуске скрипта, будет обрабатываться ArgumentParser как объект print_string.

Обратите внимание, что по умолчанию метод add_argument обрабатывает значения, полученные из аргументов, как строки, поэтому вам не нужно явно указывать «тип» в этом случае. Значение по умолчанию «Нет» также назначается добавленным аргументам, если не переопределено.

Еще раз взгляните на справочное сообщение:

использование: тест.py [-h] [строка_печати]
Тестовая программа.
позиционные аргументы:
print_string Печатает предоставленный аргумент.
необязательные аргументы:
-h, --help показать это справочное сообщение и выйти

В одной из строк вывода написано «позиционные аргументы». Поскольку ключевое слово для аргумента не определено, в настоящее время аргумент рассматривается как «позиционный аргумент», где порядок и позиция предоставленного аргумента имеют прямое влияние на программу. Позиционные аргументы также являются обязательными, если вы не измените их поведение вручную.

Чтобы определить и проанализировать необязательные аргументы, вы можете использовать «-» (двойное тире) и изменить их значения по умолчанию, используя аргумент «default».

import argparse
парсер = argparse.ArgumentParser (description = 'Тестовая программа.')
парсер.add_argument ("- print_string", help = "Печатает предоставленный аргумент.", default =" Случайная строка.”)
args = парсер.parse_args ()
печать (аргументы.print_string)

Теперь, когда вы запускаете «test.py »без аргументов, вы должны получить« Случайная строка.”Как результат. Вы также можете при желании использовать ключевое слово «-print_string» для печати любой строки по вашему выбору.

$ ./контрольная работа.py --print_string LinuxHint.com LinuxHint.ком

Обратите внимание, что вы можете сделать необязательный аргумент обязательным, используя дополнительный аргумент «required = True».

Наконец, вы также можете определить сокращенные версии аргумента, используя «-» (одинарное тире), чтобы уменьшить многословие.

import argparse
парсер = argparse.ArgumentParser (description = 'Тестовая программа.')
парсер.add_argument («- p», «--print_string», help = «Печатает предоставленный аргумент.", default =" Случайная строка.”)
args = парсер.parse_args ()
печать (аргументы.print_string)

Выполнение следующей команды должно дать тот же результат, что и выше:

$ ./контрольная работа.py -p LinuxHint.ком

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

Чтобы обрабатывать аргументы, которым требуются целочисленные значения, вам необходимо установить ключевое слово «type» на «int», чтобы разрешить проверку и выдавать ошибки в случае, если условие не выполняется.

import argparse
парсер = argparse.ArgumentParser (description = 'Тестовая программа.')
парсер.add_argument ("- p", "--print_string", help = "Печатает предоставленный аргумент.", type = int)
args = парсер.parse_args ()
печать (аргументы.print_string)

Попробуйте выполнить следующую команду:

$ ./контрольная работа.py -p LinuxHint.ком

Вы должны получить такую ​​ошибку:

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

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

$ ./контрольная работа.py -p 1000 1000

Пример 4: Обработка переключателей "Истина" и "Ложь"

Вы можете передавать аргументы без каких-либо значений, чтобы рассматривать их как флаги True и False, используя аргумент «действие».

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

Выполните команду ниже, чтобы получить на выходе простое «Истина»:

$ ./контрольная работа.py -p

Если вы запустите сценарий без аргумента «-p», вместо него будет присвоено значение «Ложь». Значение «store_true» ключевого слова «action» присваивает значение «True» переменной «print_string» всякий раз, когда явно указан аргумент «-p», в противном случае переменной присваивается значение «False».

Пример 5. Обработка значений аргументов как списка

Если вы хотите получить сразу несколько значений и сохранить их в списке, вам необходимо указать ключевое слово nargs в следующем формате:

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

Выполните следующую команду, чтобы проверить приведенный выше код:

$ ./контрольная работа.py -p «а» «б»

Вы должны получить примерно такой результат:

['a', 'b']

Заключение

Модуль «argparse» довольно обширен с множеством опций для настройки поведения приложений командной строки и анализа значений, вводимых пользователем. Эти примеры касаются только базового использования модуля «argparse». Для продвинутых и сложных приложений вам могут потребоваться разные реализации. Посетите официальную документацию для полного объяснения модуля.

Лучшие игры Oculus App Lab
Если вы владелец гарнитуры Oculus, вы должны знать о загрузке неопубликованных приложений. Боковая загрузка - это процесс установки на гарнитуру содер...
10 лучших игр для Ubuntu
Платформа Windows была одной из доминирующих платформ для игр из-за огромного процента игр, которые разрабатываются сегодня с встроенной поддержкой Wi...
5 лучших аркад для Linux
В настоящее время компьютеры - это серьезные машины, используемые для игр. Если вы не можете получить новый рекорд, вы поймете, о чем я. В этом посте ...