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

онлайн тренажер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Как работать с аргументами командной строки в Python? Полное руководство

Работа с аргументами командной строки — это важный навык для разработки удобных и гибких скриптов. Вместо того чтобы жестко прописывать данные в коде, вы можете передавать параметры прямо при запуске программы. В Python для этих целей чаще всего используют модуль argparse, который входит в стандартную библиотеку и предоставляет удобный функционал для обработки аргументов.

Эта статья — ваше пошаговое руководство по работе с аргументами командной строки в Python с использованием argparse.


Зачем нужны аргументы командной строки?

  • ✅ Повышение гибкости программы.

  • ✅ Возможность управления поведением программы без изменения кода.

  • ✅ Удобство автоматизации задач и написания CLI-инструментов.

  • ✅ Лёгкая интеграция скриптов в пайплайны и CI/CD процессы.

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

  • Инсталляторы пакетов (pip, apt).

  • Инструменты работы с файлами (например, tar, zip).

  • Ваши собственные скрипты для автоматизации.


Импортируем модуль argparse

Модуль argparse встроен в стандартную библиотеку Python, и вам не нужно ничего дополнительно устанавливать.

python
import argparse

Простой пример использования argparse

Напишем базовый скрипт, который принимает имя пользователя и приветствует его.

python
import argparse parser = argparse.ArgumentParser(description="Простая программа приветствия") parser.add_argument("name", help="Имя пользователя") args = parser.parse_args() print(f"Привет, {args.name}!")

📌 Как запустить этот скрипт:

bash
python script.py Иван

Результат:

 
Привет, Иван!

Что такое обязательные и необязательные аргументы?

Обязательные аргументы

Это аргументы, без которых программа не запустится. Их обычно задают без префиксов.

python
parser.add_argument("filename", help="Имя файла для обработки")

Необязательные аргументы (параметры)

Обычно начинаются с дефиса - или двойного дефиса --.

python
parser.add_argument("-v", "--verbose", help="Вывести подробную информацию", action="store_true")

Типы данных аргументов

По умолчанию аргументы обрабатываются как строки. Чтобы указать другой тип, используйте параметр type.

python
parser.add_argument("number", type=int, help="Введите целое число")

Если пользователь передаст не число, будет автоматически выдана ошибка.


Пример: Скрипт для сложения двух чисел

python
import argparse parser = argparse.ArgumentParser(description="Скрипт сложения двух чисел") parser.add_argument("a", type=int, help="Первое число") parser.add_argument("b", type=int, help="Второе число") args = parser.parse_args() result = args.a + args.b print(f"Результат: {result}")

📌 Запуск:

bash
python sum.py 5 10

Результат:

makefile
Результат: 15

Флаги и параметры с действиями

Если вам нужно просто проверить наличие параметра (например, включить подробный режим), используйте action="store_true".

python
parser.add_argument("-v", "--verbose", action="store_true", help="Включить подробный режим")

📌 Пример запуска:

bash
python script.py -v

Обработка нескольких значений одним параметром

Вы можете указать параметр nargs, чтобы принимать несколько значений.

python
parser.add_argument("numbers", nargs="+", type=int, help="Числа для суммирования")

📌 Запуск:

bash
python sum.py 1 2 3 4 5

Результат:

makefile
Результат: 15

Добавляем значения по умолчанию

Если параметр не передан, можно указать значение по умолчанию с помощью default.

python
parser.add_argument("-c", "--count", type=int, default=1, help="Количество повторений")

Как красиво выводить справку для пользователя

При запуске скрипта с параметром -h или --help автоматически отображается справка.

bash
python script.py --help

Результат:

bash
usage: script.py [-h] name Простая программа приветствия positional arguments: name Имя пользователя optional arguments: -h, --help show this help message and exit

Работа с подкомандами (подобно git)

Модуль argparse позволяет создавать полноценные CLI-инструменты с подкомандами.

python
parser = argparse.ArgumentParser(description="CLI-инструмент") subparsers = parser.add_subparsers(dest="command") add_parser = subparsers.add_parser("add", help="Добавление чисел") add_parser.add_argument("a", type=int) add_parser.add_argument("b", type=int) args = parser.parse_args() if args.command == "add": print(f"Результат: {args.a + args.b}")

📌 Пример запуска:

bash
python tool.py add 3 4

Результат:

makefile
Результат: 7

Альтернативы argparse

  • sys.argv — для самой базовой работы с аргументами (список строк).

  • click — популярная сторонняя библиотека для удобного создания CLI-приложений.

  • typer — современная библиотека на основе type hints.


FAQ — Часто задаваемые вопросы

1. Что делать, если аргументы не передаются?

Проверьте правильность синтаксиса запуска скрипта и корректность обработки аргументов в коде.


2. Как обрабатывать ввод некорректных данных?

Используйте параметр type и обрабатывайте исключения через try-except.


3. Можно ли использовать argparse с Jupyter Notebook?

Это возможно, но не рекомендуется. Лучше использовать argparse в скриптах, а в Jupyter передавать параметры через переменные.


4. Как задать обязательный флаг?

Используйте required=True в методе add_argument.

python
parser.add_argument("--config", required=True, help="Путь к конфигурационному файлу")

5. Как получить список всех аргументов?

С помощью vars(args):

python
print(vars(args))

Заключение

Теперь вы знаете, как обрабатывать аргументы командной строки в Python с помощью модуля argparse. Этот инструмент позволяет быстро создавать гибкие и мощные CLI-приложения, экономя время и упрощая работу с пользователями.

Освойте базовые и продвинутые возможности argparse, и ваши скрипты станут гораздо удобнее и универсальнее!

Новости