Обновление кода optparse¶Upgrading optparse code
Изначально модуль argparse пытался сохранять совместимость с optparse. Однако optparse было трудно прозрачно расширять, особенно с изменениями, необходимыми для поддержки спецификаторов nargs= и улучшенных сообщений об использовании. Когда бо́льшая часть optparse была либо скопирована, либо исправлена обезьяньим патчем, поддерживать обратную совместимость стало непрактично.
Модуль argparse улучшает модуль optparse
по ряду параметров, в том числе:
Обработка позиционных аргументов.
Поддержка подкоманд.
Разрешение альтернативных префиксов параметров, например
+и/.Обработка аргументов в стиле «ноль или более» и «один или более».
Формирование более информативных сообщений об использовании.
Предоставление гораздо более простого интерфейса для пользовательских
typeиaction.
Частичный путь перехода с 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>').