Risposta breve è che non puoi farlo perché nargs non supporta qualcosa come '2+'.
Long risposta è che si può aggirare che l'utilizzo di qualcosa di simile:
parser = argparse.ArgumentParser(usage='%(prog)s [-h] file file [file ...]')
parser.add_argument('file1', nargs=1, metavar='file')
parser.add_argument('file2', nargs='+', metavar='file', help=argparse.SUPPRESS)
namespace = parser.parse_args()
namespace.file = namespace.file1 + namespace.file2
I trucchi che avete bisogno sono:
- Usa
usage
di fornire proprietario stringa di utilizzo al parser
- Utilizzare
metavar
per visualizzare un argomento con un nome diverso nella stringa della guida
- Utilizzare
SUPPRESS
per evitare la visualizzazione di aiuto per una delle variabili
- Unire due variabili diverse solo aggiungendo un nuovo attributo all'oggetto
Namespace
che il parser restituisce
L'esempio precedente produce il seguente stringa aiuto:
usage: test.py [-h] file file [file ...]
positional arguments:
file
optional arguments:
-h, --help show this help message and exit
e sarà ancora fallire quando sono passati meno di due argomenti:
$ python test.py arg
usage: test.py [-h] file file [file ...]
test.py: error: too few arguments
hanno anche uno sguardo a http://stackoverflow.com/quest ioni/4194948/python-argparse-c'è-un-vie-a-specifica-a-gamma-in-nargs. Ciò consente una flessibilità ancora maggiore, senza incasinare (o disturbare) il testo di aiuto. – Evert