I create the following argument parser:
parser = argparse.ArgumentParser()
parser.add_argument('name')
parser.add_argument('script')
parser.add_argument('--src', nargs='?')
When running ./script.py the_name the_script --src my_script.py
, all the arguments get their value "as expected".
Now, I add a remainder:
parser = argparse.ArgumentParser()
parser.add_argument('name')
parser.add_argument('script')
parser.add_argument('--src', nargs='?')
parser.add_argument('args', nargs=argparse.REMAINDER)
Now, running again ./script.py the_name the_script --src my_script.py
, argument src
suddenly becomes None
.
However, running ./script.py --src my_script.py the_name the_script --arg1 arg2 xyz
will set all arguments "as expected".
How can I achieve that my argument parser first wants to see the positional arguments name
and script
, then some known arguments like --src
and then finally an arbitrary remainder?