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

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

我有一个程序可以接受几个不同的参数,并且根据传递的参数,在 python 程序中调用该函数。我知道如何使用 sys.arv,并且我以前使用过 argparse,但是我不确定如何使用 argparse 完成以下操作..

可能的参数:func1、func2、func3

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

python myprogram func1
python myprogram func2
python myprogram func3

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

谢谢!

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

将接受一个字符串,如果该字符串不是选择之一,则会引发错误。结果将是一个命名空间,如

 Namespace(foo='func1')

 print(args.foo)
 # 'func1'

这是你想要的吗?

子解析器机制做同样的事情,但还允许您定义添加的参数,这些参数可以根据给定的子解析器而有所不同。