我有一个程序可以接受一些不同的参数,并且根据传递的参数是什么,在python程序中调用该函数。我知道如何使用sys.arv,之前我使用过argparse,但是我不知道如何用argparse来完成以下内容..
可能的参数:func1,func2,func3
可以使用以下任一方式执行程序:
python myprogram func1
python myprogram func2
python myprogram func3
因此,传递的arg与程序中的函数相关。我不想在参数中包含任何破折号,所以没有像-func1或-func2 ......等等。
谢谢!
答案 0 :(得分:1)
parser.add_argument('foo', choices=['func1','func2','func3'])
将接受一个字符串,如果该字符串不是其中一个字符串,则引发错误。结果将是一个名称空间,如
Namespace(foo='func1')
和
print(args.foo)
# 'func1'
这就是你想要的吗?
subparsers机制做同样的事情,但也允许你定义添加的arguents,这些arguents可以根据给出的subparser而有所不同。