from argparse import ArgumentParser, SUPPRESS, REMAINDER import sys print( sys.version ) parser = ArgumentParser() parser.add_argument('--foo', dest='foo') parser.add_argument('--bar', dest='bar') parser.add_argument('baz', nargs='*') parser.add_argument('blorf', nargs='*') print( parser.parse_args('a b c d --foo x --bar 1'.split())) print( parser.parse_args('--foo x a b c d --bar 1'.split())) print( parser.parse_args('--foo x --bar 1 a b c d'.split())) print( parser.parse_args('a b --foo x --bar 1 c d'.split())) # expected: Namespace(bar='1', baz=['a', 'b', 'c', 'd'], foo='x') # actual: error: unrecognized arguments: c d