Обновление кода optparse
Изначально модуль argparse пытался поддерживать совместимость с optparse. Однако модуль optparse было трудно прозрачно расширять, особенно с учётом изменений, необходимых для поддержки спецификаторов nargs= и более понятных сообщений об использовании. Когда почти всё в optparse было либо скопировано и вставлено, либо исправлено с помощью monkey patching, поддержка обратной совместимости перестала казаться практичной.
Модуль 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>').
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/howto/argparse-optparse.html