Here’s a parser that handles a repeated 2 argument optional – with names defined in the metavar
:
parser=argparse.ArgumentParser()
parser.add_argument('-i','--input',action='append',nargs=2,
metavar=('url','name'),help='help:')
In [295]: parser.print_help()
usage: ipython2.7 [-h] [-i url name]
optional arguments:
-h, --help show this help message and exit
-i url name, --input url name
help:
In [296]: parser.parse_args('-i one two -i three four'.split())
Out[296]: Namespace(input=[['one', 'two'], ['three', 'four']])
This does not handle the 2 or 3 argument
case (though I wrote a patch some time ago for a Python bug/issue that would handle such a range).
How about a separate argument definition with nargs=3
and metavar=('url','name','other')
?
The tuple metavar
can also be used with nargs="+"
and nargs="*"
; the 2 strings are used as [-u A [B ...]]
or [-u [A [B ...]]]
.