是否可以使用argparse传递可选参数而不使用破折号?

时间:2016-09-11 22:38:27

标签: python argparse

我有一个程序可以接受一些不同的参数,并且根据传递的参数是什么,在python程序中调用该函数。我知道如何使用sys.arv,之前我使用过argparse,但是我不知道如何用argparse来完成以下内容..

可能的参数:func1,func2,func3

可以使用以下任一方式执行程序:

python myprogram func1
python myprogram func2
python myprogram func3

因此,传递的arg与程序中的函数相关。我不想在参数中包含任何破折号,所以没有像-func1或-func2 ......等等。

谢谢!

1 个答案:

答案 0 :(得分:1)

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

将接受一个字符串,如果该字符串不是其中一个字符串,则引发错误。结果将是一个名称空间,如

 Namespace(foo='func1')

 print(args.foo)
 # 'func1'

这就是你想要的吗?

subparsers机制做同样的事情,但也允许你定义添加的arguents,这些arguents可以根据给出的subparser而有所不同。