Главная страница » Python аргументы командной строки

Python аргументы командной строки

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

В Python есть несколько способов обработки аргументов командной строки:

Sys. argv: Самый простой и базовый способ. Argparse: Рекомендуемый способ для создания сложных и удобных интерфейсов командной строки. Getopt: Более старый модуль, похожий на функцию getopt() из C. argparse обычно предпочтительнее.

1. Использование Sys. argv (просто и базово)

Модуль sys предоставляет доступ к системным параметрам. sys. argv — это Список строк, где:

    sys. argv[0] — это имя самого скрипта. sys. argv[1] — это первый аргумент, sys. argv[2] — второй аргумент, и так далее.

Пример (Basic_args. py):

Python

Import sys

Print(f"Имя скрипта: {sys. argv[0]}")

Print(f"Все аргументы: {sys. argv}")

Print(f"Количество аргументов (включая имя скрипта): {len(sys. argv)}")

If len(sys. argv) > 1:

print(f"Первый аргумент: {sys. argv[1]}")

If len(sys. argv) > 2:

print(f"Второй аргумент: {sys. argv[2]}")

Else:

print("Второй аргумент не был предоставлен.")

# Пример использования аргументов

If len(sys. argv) > 1:

try:

# Аргументы всегда приходят как строки, их нужно преобразовывать

number = int(sys. argv[1])

print(f"Вы ввели число: {number}. Его квадрат: {number * number}")

except ValueError:

print(f"Ошибка: ‘{sys. argv[1]}’ не является целым числом.")

Как запустить из командной строки:

Bash

Python basic_args. py

# Вывод:

# Имя скрипта: basic_args. py

# Все аргументы: [‘basic_args. py’]

# Количество аргументов (включая имя скрипта): 1

# Второй аргумент не был предоставлен.

Python basic_args. py hello world 123

# Вывод:

# Имя скрипта: basic_args. py

# Все аргументы: [‘basic_args. py’, ‘hello’, ‘world’, ‘123’]

# Количество аргументов (включая имя скрипта): 4

# Первый аргумент: hello

# Второй аргумент: world

# Ошибка: ‘hello’ не является целым числом.

Python basic_args. py 50

# Вывод:

# Имя скрипта: basic_args. py

# Все аргументы: [‘basic_args. py’, ’50’]

# Количество аргументов (включая имя скрипта): 2

# Первый аргумент: 50

# Второй аргумент не был предоставлен.

# Вы ввели число: 50. Его квадрат: 2500

Недостатки Sys. argv:

    Все аргументы — строки: Вам нужно вручную преобразовывать их в нужные типы (числа, булевы значения и т. д.). Нет обработки флагов/опций: Сложно работать с опциями типа —verbose или — o output. txt. Нет справки: Нет автоматической генерации сообщения о том, какие аргументы принимает скрипт. Ручная проверка: Нужно вручную проверять количество аргументов и их валидность.

2. Использование Argparse (мощно и удобно)

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

Пример (Advanced_args. py):

Python

Import argparse

# 1. Создаем парсер аргументов

Parser = argparse. ArgumentParser(description="Эта программа демонстрирует использование argparse. Она может приветствовать пользователя и выполнять математические операции.")

# 2. Добавляем аргументы

# Позиционный аргумент:

# Это обязательный аргумент, который указывается без флагов.

Parser. add_argument("name", help="Имя пользователя, которого нужно поприветствовать")

# Опциональный аргумент (флаг):

# —verbose или — v: если присутствует, то логируем больше информации.

# action="store_true" означает, что если флаг есть, значение True, иначе False.

Parser. add_argument("-v", "—verbose", action="store_true", help="Включить подробный вывод")

# Опциональный аргумент со значением:

# —age или — a: ожидает числовое значение

Parser. add_argument("-a", "—age", type=int, default=18,

help="Возраст пользователя (по умолчанию: 18)")

# Добавление опциональных аргументов для математической операции

Parser. add_argument("—operation", choices=["add", "subtract", "multiply", "divide"],

help="Математическая операция (add, subtract, multiply, divide)")

Parser. add_argument("—num1", type=float, help="Первое число для операции")

Parser. add_argument("—num2", type=float, help="Второе число для операции")

# 3. Разбираем аргументы, переданные в командной строке

Args = parser. parse_args()

# 4. Используем полученные аргументы

Print(f"Привет, {args. name}!")

If args. verbose:

print(f"Подробный режим включен. Возраст: {args. age}")

print(f"Все аргументы: {args}")

Print(f"Твой возраст: {args. age}")

# Выполнение математической операции, если указаны все необходимые аргументы

If args. operation and args. num1 is not None and args. num2 is not None:

result = None

if args. operation == "add":

result = args. num1 + args. num2

elif args. operation == "subtract":

result = args. num1 — args. num2

elif args. operation == "multiply":

result = args. num1 * args. num2

elif args. operation == "divide":

if args. num2 != 0:

result = args. num1 / args. num2

else:

print("Ошибка: Деление на ноль невозможно!")

if result is not None:

print(f"Результат операции {args. num1} {args. operation} {args. num2} = {result}")

Else:

if args. operation or args. num1 is not None or args. num2 is not None:

print("Чтобы выполнить математическую операцию, укажите —operation, —num1 и —num2.")

Как запустить из командной строки:

Bash

Python advanced_args. py Alice

# Вывод:

# Привет, Alice!

# Твой возраст: 18

Python advanced_args. py Bob — v —age 30

# Вывод:

# Привет, Bob!

# Подробный режим включен. Возраст: 30

# Все аргументы: Namespace(name=’Bob’, verbose=True, age=30, operation=None, num1=None, num2=None)

# Твой возраст: 30

Python advanced_args. py Charlie —operation add —num1 10 —num2 5

# Вывод:

# Привет, Charlie!

# Твой возраст: 18

# Результат операции 10.0 add 5.0 = 15.0

Python advanced_args. py David —help

# Вывод (автоматически генерируемая справка):

# usage: advanced_args. py [-h] [-v] [-a AGE] [—operation {add, subtract, multiply, divide}] [—num1 NUM1] [—num2 NUM2] name

#

# Эта программа демонстрирует использование argparse. Она может приветствовать пользователя и выполнять математические операции.

#

# positional arguments:

# name Имя пользователя, которого нужно поприветствовать

#

# options:

# — h, —help show this help message and exit

# — v, —verbose Включить подробный вывод

# — a AGE, —age AGE Возраст пользователя (по умолчанию: 18)

# —operation {add, subtract, multiply, divide}

# Математическая операция (add, subtract, multiply, divide)

# —num1 NUM1 Первое число для операции

# —num2 NUM2 Второе число для операции

Преимущества Argparse:

    Автоматическая генерация справки: —help работает "из коробки". Типизация аргументов: type=int, type=float автоматически преобразуют строки в нужные типы. Значения по умолчанию: default=18 позволяет задавать значения, если аргумент не указан. Обязательные/опциональные аргументы: Легко настраиваются. Флаги (—verbose, -v): Удобная обработка булевых опций. Выбор из списка (Choices): Ограничивает допустимые значения для аргумента. Обработка ошибок: Автоматически сообщает о некорректных аргументах.

Когда что использовать:

    Используйте Sys. argv для очень простых скриптов, которым нужно всего несколько позиционных аргументов без сложных настроек. Используйте Argparse для большинства реальных приложений командной строки. Это стандартный и наиболее мощный инструмент для этой задачи в Python. Избегайте getopt, если нет веских причин (например, совместимость со старым кодом).

В большинстве случаев, когда вы пишете скрипт, который будет запускаться из командной строки и принимать параметры, Argparse — это ваш лучший выбор.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх