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)

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

$ ./контрольная работа.py --print_string LinuxHint.ком
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». Для продвинутых и сложных приложений вам могут потребоваться разные реализации. Посетите официальную документацию для полного объяснения модуля.

Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...
Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...