Spec-Zone.ru › Python 3.13

Перенос кода с optparse на argparse

Модуль argparse предоставляет несколько возможностей более высокого уровня, которые не встроены в модуль optparse, в том числе:

  • Обработку позиционных аргументов.
  • Поддержку подкоманд.
  • Возможность использовать альтернативные префиксы параметров, например + и /.
  • Обработку аргументов, которые могут встречаться ноль или более раз либо один или более раз.
  • Создание более информативных сообщений об использовании.
  • Предоставление гораздо более простого интерфейса для пользовательских type и action.

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

Как описано в разделе Выбор библиотеки для разбора аргументов, приложения, которые в настоящее время используют optparse и довольны его работой, могут продолжать использовать optparse.

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

Для приложений, в которых всё же решено перейти с optparse на argparse, могут быть полезны следующие рекомендации:

  • Замените все вызовы optparse.OptionParser.add_option() вызовами ArgumentParser.add_argument().
  • Замените (options, args) = parser.parse_args() на args = parser.parse_args() и добавьте отдельные вызовы ArgumentParser.add_argument() для позиционных аргументов. Имейте в виду, что то, что ранее называлось options, в контексте argparse теперь называется args.
  • Замените optparse.OptionParser.disable_interspersed_args(), используя parse_intermixed_args() вместо parse_args().
  • Замените действия обратного вызова и именованные аргументы callback_* на аргументы type или action.
  • Замените строковые имена для именованных аргументов type соответствующими объектами типов (например, int, float, complex и т. д.).
  • Замените optparse.Values на Namespace, а optparse.OptionError и optparse.OptionValueError — на ArgumentError.
  • Замените строки с неявными аргументами, например %default или %prog, стандартным синтаксисом Python для форматирования строк с помощью словарей: %(default)s и %(prog)s.
  • Замените аргумент version конструктора OptionParser вызовом parser.add_argument('--version', action='version', version='<the version>').

© 2001–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/howto/argparse-optparse.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API