Jane Doe Jane Doe - 1 year ago 101
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 Source
 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.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download