Я использую модуль argparse в Python для анализа параметров, введенных в интерфейсе командной строки. У меня есть следующий вызов add_argument для объекта подпарсера:
submit_parser.add_argument('-pv','--provision',metavar='PROVISION', dest='PROVISION',
help='provision system',
action='store_true', default=False, required=False)
Я получаю эту ошибку:
Traceback (most recent call last):
File "./scripts/tp4", line 94, in <module>
main()
File "./scripts/tp4", line 74, in main
modloader.loadModules(sub_parsers)
File "/usr/lib/python2.6/site-packages/tp4/cli/Moduleloader.py", line 66, in loadModules
registered_modules[module_name].setSubparserArgs(module_sub_parser)
File "/usr/lib/python2.6/site-packages/tp4/cli/modules/AutotestModule.py", line 135, in setSubparserArgs
action='store_true', default=False, required=False)
File "/usr/share/tp4/cli/zip/argparse.zip/argparse.py", line 1302, in add_argument
TypeError: __init__() got an unexpected keyword argument 'metavar'
Если я удалю параметры действия или метавара, это сработает. Почему оба не могут быть вместе? Об этом ограничении ничего нет в документации по argparse по адресу http://docs.python.org/dev/library/argparse. HTMLа>.
Заранее благодарю за любую помощь
action
равно'store_true'
, значение по умолчанию уже равноFalse
(а если действие равно'store_false'
, значение по умолчанию равноTrue
). Это довольно удобно, хотя и отличается отoptparse
(где по умолчаниюNone
в обоих случаях). - person torek   schedule 17.08.2012