Модуль argparse
— стандартный способ создания консольных утилит с обработкой аргументов в Python. Он предоставляет удобный интерфейс для:
import argparse
def main():
# 1. Создаем парсер
parser = argparse.ArgumentParser(
description='Обработчик текстовых файлов' # Описание скрипта
)
# 2. Добавляем аргументы
parser.add_argument(
'input_file', # Позиционный аргумент
help='Путь к входному файлу' # Текст помощи
)
parser.add_argument(
'-o', '--output', # Опциональный аргумент
required=False, # Не обязательный
default='output.txt', # Значение по умолчанию
help='Путь к выходному файлу (по умолчанию: output.txt)'
)
parser.add_argument(
'-v', '--verbose', # Флаг (без значения)
action='store_true', # Сохраняем True если флаг есть
help='Вывод подробной информации'
)
# 3. Парсим аргументы
args = parser.parse_args()
# 4. Используем аргументы
if args.verbose:
print(f"Обработка файла {args.input_file}...")
# Здесь основная логика скрипта
print(f"Входной файл: {args.input_file}")
print(f"Выходной файл: {args.output}")
if __name__ == '__main__':
main()
parser.add_argument(
'username', # Имя аргумента
type=str, # Тип значения
help='Имя пользователя'
)
parser.add_argument(
'--count',
type=int,
default=1,
help='Количество повторов (по умолчанию: 1)'
)
parser.add_argument(
'--force',
action='store_true', # Флаг без значения
help='Принудительное выполнение'
)
parser.add_argument(
'--color',
choices=['red', 'green', 'blue'],
help='Цвет оформления'
)
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(dest='command', required=True)
# Команда 'compress'
compress_parser = subparsers.add_parser('compress', help='Сжатие файла')
compress_parser.add_argument('file', help='Файл для сжатия')
# Команда 'extract'
extract_parser = subparsers.add_parser('extract', help='Распаковка файла')
extract_parser.add_argument('archive', help='Архив для распаковки')
args = parser.parse_args()
if args.command == 'compress':
# Логика сжатия
elif args.command == 'extract':
# Логика распаковки
parser = argparse.ArgumentParser()
group = parser.add_argument_group('Настройки сети')
group.add_argument('--host', help='Хост подключения')
group.add_argument('--port', type=int, help='Порт подключения')
group = parser.add_mutually_exclusive_group()
group.add_argument('--json', action='store_true', help='JSON формат')
group.add_argument('--xml', action='store_true', help='XML формат')
try:
args = parser.parse_args()
except argparse.ArgumentError as e:
print(f"Ошибка аргументов: {e}")
parser.print_help()
sys.exit(1)
except SystemExit:
# argparse вызывает sys.exit() при --help
pass
class CustomHelpFormatter(argparse.HelpFormatter):
def _format_action_invocation(self, action):
# Кастомизация отображения аргументов
if not action.option_strings:
return action.dest.upper()
else:
return ', '.join(action.option_strings)
parser = argparse.ArgumentParser(
formatter_class=CustomHelpFormatter # Применяем кастомный форматтер
)
argparse
— стандартный и мощный модуль для обработки аргументовhelp
— это делает ваш скрипт удобнееЛучшие практики:
Пример вызова скрипта:
python script.py input.txt -o result.txt --verbose