2016-03-12 2 views
0

Я пишу код с argparse опциями как:argparse несколько вариантов комбинации

parser.add_argument("--nb", help="show number", action='store_true') 
parser.add_argument("--md", help="Create xyz file", action='store_true') 
parser.add_argument("--xsf", help="Create xsf file for md(default is xyz)" 
        , action='store_true') 

и называется правильно.

Но я хочу, скажем, -xsf работать с опцией -md. Если я использую

./mycode.py --nb --xsf 

Это должно дать сообщение об ошибке/предупреждение, что --xsf не работает с --nb, и с --md только

+0

Может ' md' и 'nb' идут вместе? – hpaulj

+0

нет. фактически, как я нашел из сообщения zondo, 'nb' и' md' являются взаимоисключающей группой. И я хочу, чтобы '-xsf' был только в качестве подчинения' md' – BaRud

+0

. Как бы вы объяснили альтернативы своим пользователям? Какая линия «использования» будет понятна? – hpaulj

ответ

1

Вы можете добавить взаимоисключающими группу:

parser.add_argument("--md", help="Create xyz file", action='store_true') 

group = parser.add_mutually_exclusive_group() 

group.add_argument("--nb", help="show number", action='store_true') 
group.add_argument("--xsf", help="Create xsf file for md(default is xyz)" 
        , action='store_true') 
Смежные вопросы