Перенос кода с 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