2015-10-14 2 views
1

Я пытаюсь создать argparser, где один из парсеров должен иметь значение по умолчанию, а также является обязательным. я следующий до сих пор:Argparser со значением по умолчанию и обязательным

fulllist_parser.add_argument(
    '--type', 
    required=True, 
    default="VirtualMachine", 
    type=str, 
    help='Object type, e.g. Network, VirtualMachine.' 

Когда я запускаю его из CLI, я получаю сообщение об ошибке:

supdeploy fulllist: error: argument --type is required 

Я понимаю, почему это подходит, поскольку я не включая --type на CLI. И это то, чего я хочу достичь, что значение по умолчанию установлено, даже если я не включаю параметр парсера в CLI.

В любом случае, чтобы запустить это?

+1

Не являются обязательными и имеют значение по умолчанию, взаимоисключающее? «пользователь должен обязательно указать значение для этого, сбой в противном случае« против », если пользователь не предоставит значение для этого, это нормально, просто используйте это значение« – Kevin

+0

Doh;) ​​Почему я не думал об этом. Спасибо за подсказку, именно то, чего я пытался добиться. – derchris

+0

Хорошо, может быть, не совсем. Поскольку я больше не увижу выход справки. – derchris

ответ

0

Вы просто должны использовать default и не required

fulllist_parser.add_argument(
    '--type', 
    default="VirtualMachine", 
    type=str, 
    help='Object type, e.g. Network, VirtualMachine.' 

Потому что тогда, если не указано вы получите значение по умолчанию обратно (так что вы всегда получите значение). Посмотрите на documentation:

The default keyword argument of add_argument(), whose value defaults to None, specifies what value should be used if the command-line argument is not present. For optional arguments, the default value is used when the option string was not present at the command line