Модернизация кода 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. - Замените аргумент конструктора OptionParser
versionна вызовparser.add_argument('--version', action='version', version='<the version>').
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/howto/argparse-optparse.html