之一,我有可以通过以下方式来使用的程序:Python的argparse选择几个可选参数
program install -a arg -b arg
program list
program update
有永远只能是(install
,list
或update
)指定的位置参数之一。并且install
方案中只能有其他参数。
argparse文档有点密集,我很难弄清楚如何正确地做到这一点。我的add_argument
应该是什么样子?
之一,我有可以通过以下方式来使用的程序:Python的argparse选择几个可选参数
program install -a arg -b arg
program list
program update
有永远只能是(install
,list
或update
)指定的位置参数之一。并且install
方案中只能有其他参数。
argparse文档有点密集,我很难弄清楚如何正确地做到这一点。我的add_argument
应该是什么样子?
这看起来像你想使用subparser
s。
from argparse import ArgumentParser
parser = ArgumentParser()
subparsers = parser.add_subparsers()
install = subparsers.add_parser('install')
install.add_argument('-b')
install.add_argument('-a')
install.set_defaults(subparser='install')
lst = subparsers.add_parser('list')
lst.set_defaults(subparser='list')
update = subparsers.add_parser('update')
update.set_defaults(subparser='update')
print parser.parse_args()
如文档指出,我与set_defaults
相结合,这样就可以知道被调用了哪些子分析器。
你看过[argparse教程](http://docs.python.org/2.7/howto/argparse.html)吗? –
@JonathonReinhart,不,我没有感谢这个链接。我会看到我能从中得到什么。 – n0pe
@TankyWoo,阅读我问题的最后一段。此外,将这些信息放在SO上可以让其他人更容易找到相同的信息。如果RTFM是一揽子规则,则SO不存在。 – n0pe