Seen bug in argparse module
Peter Otten
__peter__ at web.de
Fri Jun 24 16:13:00 EDT 2016
Jagdish Choudhary wrote:
> When argument provided from user which doesn't match to right option which
> is mentioned in help , it runs without issue..let me provide an example
>
> https://docs.python.org/3.3/library/argparse.html
>
> import argparse
> parser = argparse.ArgumentParser(description='Process some
> integers.')parser.add_argument('integers', metavar='N', type=int,
> nargs='+',
> help='an integer for the
> accumulator')parser.add_argument('--sum', dest='accumulate',
> action='store_const',
> const=sum, default=max,
> help='sum the integers (default: find the max)')
> args = parser.parse_args()print(args.accumulate(args.integers))
>
> python prog.py -h
> usage: prog.py [-h] [--sum] N [N ...]
>
> Process some integers.
>
> positional arguments:
> N an integer for the accumulator
>
> optional arguments:
> -h, --help show this help message and exit
> --sum sum the integers (default: find the max)
>
> If user run it like below-
>
> JAGDISHs-MacBook-Pro:test_python jagdish$ python prog.py 12 3 4 --sum
> 19
> JAGDISHs-MacBook-Pro:test_python jagdish$ python prog.py 12 3 4 --su
> 19
> JAGDISHs-MacBook-Pro:test_python jag
This works as designed:
https://docs.python.org/3.3/library/argparse.html#prefix-matching
Starting with Python 3.5 you can disable this behaviour with
allow_abbrev=False, see
https://docs.python.org/3.6/library/argparse.html#allow-abbrev
If you think this should have been the default -- I agree.
More information about the Python-list
mailing list