以下解析器应该让我做一些子命令:
% my_script acmd a_val
在my_script.py
中处理类似的事情(使用列表而不是实际的命令行。)
import argparse
parser = argparse.ArgumentParser(description='example')
subparsers = parser.add_subparsers()
acmd_parser = subparsers.add_parser('acmd')
acmd_parser.add_argument('a_arg')
bcmd_parser = subparsers.add_parser('bcmd')
bcmd_parser.add_argument('b_arg')
args = parser.parse_args(['acmd','a_val'])
print(args)
结果如下:
Namespace(a_arg='a_val')
如何判断我是acmd
还是bcmd
?我只需要从论点中弄明白吗?
答案 0 :(得分:1)
为dest
命令提供add_subparsers
参数,如
https://docs.python.org/3/library/argparse.html#sub-commands
>>> parser = argparse.ArgumentParser()
>>> subparsers = parser.add_subparsers(dest='subparser_name')
>>> subparser1 = subparsers.add_parser('1')
>>> subparser1.add_argument('-x')
>>> subparser2 = subparsers.add_parser('2')
>>> subparser2.add_argument('y')
>>> parser.parse_args(['2', 'frobble'])
Namespace(subparser_name='2', y='frobble')
这也记录了set_defaults
的使用。