Jane Doe Jane Doe - 2 months ago 16
Python Question

Is it possible to use argparse for passing optional arguments without the dash symbol?

I have a program which can take in a few different arguments, and depending on what the argument is that is passed, that function is called in the python program. I know how to use sys.arv, and I have used argparse before, however I am not sure how to go about accomplishing the following with argparse..

Possible arguments: func1, func2, func3

Program could be executed with either of the following:

python myprogram func1
python myprogram func2
python myprogram func3


Therefore the arg passed correlates to a function in the program. I do not want to include any dashes in the arguments so nothing like -func1 or -func2...etc.

Thank you!

Answer
 parser.add_argument('foo', choices=['func1','func2','func3'])

will accept one string, and raise an error if that string is not one of the chocies. The results will be a namespace like

 Namespace(foo='func1')

and

 print(args.foo)
 # 'func1'

Is that what you want?

The subparsers mechanism does the same thing, but also lets you define added arguents that can differ depending on which subparser is given.