我正在尝试解析像这样的命令行
cmd {command [COMMAND_OPTS]}
cmd a {1,2}
cmd b
cmd c
在命令{a,b,c}中,当命令是" a"时,可能有一个COMMAND_OPTS(选项)用于" a",比如{1,2 },b或c不会有任何参数。 以下是我的尝试:
import argparse
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument('-cmd', nargs = '+', choices = ['a', 'b', 'c'])
# sub_parser = parser.add_subparsers()
# parse_a = sub_parser.add_parser('a')
# parser_a.add_argument("a", default = "1", choices = ["1", "2"])
args = parser.parse_args()
if args.cmd:
print args.cmd
如何用Python Argparse解析这个?似乎subparser不适合这个问题..
谢谢,
答案 0 :(得分:3)
将所有命令放在子分析器
中parser = argparse.ArgumentParser()
sub_parser = parser.add_subparsers(dest='cmd')
parser_a = sub_parser.add_parser('a')
parser_a.add_argument("a", choices = ["1", "2"])
parser_b = sub_parser.add_parser('b')
parser_c = sub_parser.add_parser('c')
args = parser.parse_args()
args.cmd
最终应该是a,b,c
之一。如果给定a
,则应该具有值为args.a
或'1'
的{{1}}属性。该参数是必需的,因此指定默认值是没有意义的。
来自交互式'2'
shell:
ipython