Spec-Zone.ru › Python 3.14

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

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

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

Изначально модуль argparse пытался сохранять совместимость с optparse. Однако фундаментальные различия в проектировании между поддержкой декларативной обработки параметров командной строки (при этом обработка позиционных аргументов остаётся на усмотрение кода приложения) и поддержкой как именованных параметров, так и позиционных аргументов в декларативном интерфейсе привели к тому, что со временем API стал отличаться от 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.
  • Замените аргумент конструктора OptionParser version вызовом parser.add_argument('--version', action='version', version='<the version>').

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

Spec-Zone.ru

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