Найти в Дзене

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

Оглавление

Аргументы командной строки – это значения, которые передаются скрипту при его вызове из командной строки. Они позволяют пользователю настраивать поведение скрипта без изменения исходного кода.

Модуль sys

В Python для работы с аргументами командной строки используется модуль sys. В нем содержится переменная argv, которая представляет собой список строк. Первый элемент этого списка (argv[0]) всегда содержит имя самого скрипта. Остальные элементы – это аргументы, переданные скрипту.

Пример:

Python

import sys

print("Имя скрипта:", sys.argv[0])

print("Переданные аргументы:", sys.argv[1:])

Если запустить этот скрипт с командой python my_script.py arg1 arg2, то на выходе получим:

Имя скрипта: my_script.py
Переданные аргументы: ['arg1', 'arg2']

Модуль argparse

Для более удобной и гибкой работы с аргументами командной строки рекомендуется использовать модуль argparse. Он позволяет создавать парсеры аргументов, которые могут определять различные типы аргументов (позиционные, опциональные, с короткими и длинными именами) и проверять их корректность.

Пример:

Python

import argparse

parser = argparse.ArgumentParser(description='Пример использования argparse')

parser.add_argument('filename', help='Имя входного файла')

parser.add_argument('-o', '--output', help='Имя выходного файла', default='output.txt')

args = parser.parse_args()

print("Имя входного файла:", args.filename)

print("Имя выходного файла:", args.output)

В этом примере мы создали парсер, который ожидает один позиционный аргумент filename и один опциональный аргумент -o или --output. Если пользователь не укажет значение для output, то будет использовано значение по умолчанию.

Основные возможности argparse:

  • Определение позиционных и опциональных аргументов: Позиционные аргументы обязательны для указания, опциональные – нет.
  • Установка типов аргументов: Можно указывать, какого типа должно быть значение аргумента (строка, число и т.д.).
  • Проверка корректности аргументов: Парсер может проверять, что переданные аргументы имеют правильный формат и значения.
  • Создание групп аргументов: Можно группировать связанные аргументы.
  • Определение значений по умолчанию: Для опциональных аргументов можно задавать значения по умолчанию.
  • Выведение справки: Парсер может автоматически генерировать справку по использованию скрипта.

Когда использовать какой модуль?

  • sys: Для простых случаев, когда нужно просто получить список переданных аргументов.
  • argparse: Для создания сложных интерфейсов командной строки с множеством опций и аргументов.

Важные моменты

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

Дополнительные возможности:

  • Подпарсеры: Для создания более сложных интерфейсов командной строки.
  • Действия: Для выполнения определенных действий в зависимости от переданных аргументов.

Использование модуля argparse позволяет создавать более профессиональные и удобные в использовании скрипты Python.