Issue24223
Created on 2015-05-18 01:22 by bobjalex, last changed 2022-04-11 14:58 by admin. This issue is now closed.
| Messages (3) | |||
|---|---|---|---|
| msg243447 - (view) | Author: Bob Alexander (bobjalex) * | Date: 2015-05-18 01:22 | |
Here is simple example of failure to parse arguments that should parse OK. In the following little program, the second from last line contains an aargument sequence that parses OK, but the last line should but doesn't.
import argparse
ap = argparse.ArgumentParser()
ap.add_argument("--option", action="store_true")
ap.add_argument("arg_1")
ap.add_argument("arg_2", nargs="?")
print("test 1:", ap.parse_args(["abc", "mmm", "--option"]))
print("test 2:", ap.parse_args(["abc", "--option", "mmm"]))
|
|||
| msg243452 - (view) | Author: Martin Panter (martin.panter) * ![]() |
Date: 2015-05-18 03:29 | |
I suggest this is a duplicate of Issue 15112. The same problem also happens with nargs="*", and that issue apparently has a patch to handle both cases. For the record, this is the resulting error, and a demo that it works if the option comes before the positional arguments: >>> print("test 2:", ap.parse_args(["abc", "--option", "mmm"])) usage: [-h] [--option] arg_1 [arg_2] : error: unrecognized arguments: mmm Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/proj/python/cpython/Lib/argparse.py", line 1729, in parse_args self.error(msg % ' '.join(argv)) File "/home/proj/python/cpython/Lib/argparse.py", line 2385, in error self.exit(2, _('%(prog)s: error: %(message)s\n') % args) File "/home/proj/python/cpython/Lib/argparse.py", line 2372, in exit _sys.exit(status) File "/home/pythonstartup.py", line 345, in exit raise SystemExit(code) __main__.SystemExit: 2 >>> ap.parse_args(["--option", "abc", "mmm"]) Namespace(arg_1='abc', arg_2='mmm', option=True) |
|||
| msg243763 - (view) | Author: Bob Alexander (bobjalex) * | Date: 2015-05-21 16:46 | |
Thanks for the note, Martin. I agree that it's a duplicate. (I had done a brief search for possible dups, but didn't find that one!) Bob On Sun, May 17, 2015 at 8:29 PM, Martin Panter <report@bugs.python.org> wrote: > > Martin Panter added the comment: > > I suggest this is a duplicate of Issue 15112. The same problem also > happens with nargs="*", and that issue apparently has a patch to handle > both cases. > > For the record, this is the resulting error, and a demo that it works if > the option comes before the positional arguments: > > >>> print("test 2:", ap.parse_args(["abc", "--option", "mmm"])) > usage: [-h] [--option] arg_1 [arg_2] > : error: unrecognized arguments: mmm > Traceback (most recent call last): > File "<stdin>", line 1, in <module> > File "/home/proj/python/cpython/Lib/argparse.py", line 1729, in > parse_args > self.error(msg % ' '.join(argv)) > File "/home/proj/python/cpython/Lib/argparse.py", line 2385, in error > self.exit(2, _('%(prog)s: error: %(message)s\n') % args) > File "/home/proj/python/cpython/Lib/argparse.py", line 2372, in exit > _sys.exit(status) > File "/home/pythonstartup.py", line 345, in exit > raise SystemExit(code) > __main__.SystemExit: 2 > >>> ap.parse_args(["--option", "abc", "mmm"]) > Namespace(arg_1='abc', arg_2='mmm', option=True) > > ---------- > nosy: +vadmium > resolution: -> duplicate > stage: -> resolved > status: open -> closed > superseder: -> argparse: nargs='*' positional argument doesn't accept any > items if preceded by an option and another positional > title: argparse parsing bug -> argparse parsing (mingling --option and > optional positional argument) > > _______________________________________ > Python tracker <report@bugs.python.org> > <http://bugs.python.org/issue24223> > _______________________________________ > |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022-04-11 14:58:17 | admin | set | github: 68411 |
| 2015-05-21 16:46:53 | bobjalex | set | messages: + msg243763 |
| 2015-05-18 03:29:16 | martin.panter | set | status: open -> closed superseder: argparse: nargs='*' positional argument doesn't accept any items if preceded by an option and another positional messages:
+ msg243452 |
| 2015-05-18 01:22:12 | bobjalex | create | |
