2013-07-23 11 views

risposta

5

Utilizzare un mutually exclusive group:

parser = argparse.ArgumentParser(prog='PROG') 
group = parser.add_mutually_exclusive_group() 
group.add_argument('--arg1') 
group.add_argument('--arg2') 

Solo uno argomento nel gruppo è consentito per essere utilizzato.

Demo:

>>> import argparse 
>>> parser = argparse.ArgumentParser(prog='PROG') 
>>> group = parser.add_mutually_exclusive_group() 
>>> group.add_argument('--arg1') 
_StoreAction(option_strings=['--arg1'], dest='arg1', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None) 
>>> group.add_argument('--arg2') 
_StoreAction(option_strings=['--arg2'], dest='arg2', nargs=None, const=None, default=None, type=None, choices=None, help=None, metavar=None) 
>>> parser.parse_args(['--arg1', 'foo']) 
Namespace(arg1='foo', arg2=None) 
>>> parser.parse_args(['--arg2', 'bar']) 
Namespace(arg1=None, arg2='bar') 
>>> parser.parse_args(['--arg1', 'foo', '--arg2', 'bar']) 
usage: PROG [-h] [--arg1 ARG1 | --arg2 ARG2] 
PROG: error: argument --arg2: not allowed with argument --arg1 
+0

Getting 'ValueError: mutuamente esclusivi argomenti devono essere optional' senza alcun motivo. –

+0

@SantoshKumar: Quella * è * una ragione, non è vero? Assicurati che le tue opzioni siano opzionali; per esempio. non * richiede * che l'utente specifichi un valore. –

+0

@SantoshKumar: vedere http://docs.python.org/2/library/argparse.html#required per ciò che rende necessaria un'opzione –

Problemi correlati