Щоб додати аргументи до скриптів 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.комLinuxHint.ком
Зверніть увагу, що ви можете зробити необов’язковий аргумент обов’язковим, використовуючи додатковий аргумент “required = True”.
Нарешті, ви також можете визначити скорочені версії аргументу, використовуючи “-” (один тире), щоб зменшити багатослівність.
імпорт argparseсинтаксичний аналізатор = argparse.ArgumentParser (description = 'Тестова програма.')
парсер.add_argument (“- p”, “--print_string”, help = “Друкує наданий аргумент.", за замовчуванням =" Випадковий рядок.")
args = парсер.parse_args ()
друк (аргументи.print_string)
Запуск наступної команди повинен дати той самий результат, що і вище:
$ ./ тест.py -p LinuxHint.комПриклад 3: Обробка цілого аргументу
Щоб обробляти аргументи, які потребують цілочисельних значень, потрібно встановити для ключового слова “type” значення “int”, щоб дозволити перевірку та видавати помилки у випадку, якщо умова не виконується.
імпорт argparseсинтаксичний аналізатор = argparse.ArgumentParser (description = 'Тестова програма.')
парсер.add_argument ("- p", "--print_string", help = "Друкує наданий аргумент.", введіть = 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 прапори, використовуючи аргумент “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" присвоює змінній "print_string" значення "True", коли аргумент "-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”. Для розширених та складних програм вам можуть знадобитися різні варіанти реалізації. Відвідайте офіційну документацію, щоб отримати повне пояснення модуля.