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.ком
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”. Для розширених та складних програм вам можуть знадобитися різні варіанти реалізації. Відвідайте офіційну документацію, щоб отримати повне пояснення модуля.

Битва за Веснот 1.13.6 Розробка випущена
Битва за Веснот 1.13.6, випущений минулого місяця, є шостим випуском розробки в 1.13.x, і це забезпечує низку вдосконалень, особливо до інтерфейсу кор...
Як встановити League of Legends на Ubuntu 14.04
Якщо ви шанувальник League of Legends, то це можливість для вас тестувати League of Legends. Зверніть увагу, що LOL підтримується на PlayOnLinux, якщо...
Встановіть останню стратегічну гру OpenRA на Ubuntu Linux
OpenRA - це ігровий движок Libre / Free Real Time Strategy, який відтворює ранні ігри Вествуда, такі як класичний Command & Conquer: Red Alert. Пошире...