[docs] [issue22049] argparse: type=<callable> doesn't honor nargs > 1

Chris Bruner report at bugs.python.org
Tue Jul 29 21:53:26 CEST 2014


Chris Bruner added the comment:

Just had a chance to try this, and this does exactly what I wanted from
"type=". Thank you!

On Fri, Jul 25, 2014 at 4:17 PM, paul j3 <report at bugs.python.org> wrote:

>
> paul j3 added the comment:
>
> What you want is a custom Action rather than a custom Type.
>
> from the documentation:
>
>     >>> class FooAction(argparse.Action):
>     ...     def __call__(self, parser, namespace, values,
> option_string=None):
>     ...         print('%r %r %r' % (namespace, values, option_string))
>     ...         setattr(namespace, self.dest, values)
>
> 'values' will be the list ['1','2','3'], which you test and manipulate,
> before finally saving it to the 'namespace'.
>
>     ret = (int(values[0]), int(values[1]), float(values[2]))
>     setattr(namespace, self.dest, ret)
>
> Setting 'nargs=3' ensures that this action will always get a 3 item list.
>  If the parser can't give it 3 items, it will raise an error rather than
> call your Action.
>
> 'optparse' passed the remaining argument strings to Option's callback,
> which could consume as many as it wanted.  'argparse' does not give the
> Actions that power.  There is a fundamental difference in the parsing
> algorithm.
>
> ----------
>
> _______________________________________
> Python tracker <report at bugs.python.org>
> <http://bugs.python.org/issue22049>
> _______________________________________
>

----------

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue22049>
_______________________________________


More information about the docs mailing list