[英]How to parse optional arguments using python argparse?
我試圖解析這樣的命令行
cmd {command [COMMAND_OPTS]}
cmd a {1,2}
cmd b
cmd c
在命令{a,b,c}中,當命令為“a”時,可能存在“a”的COMMAND_OPTS(選項),比如說{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不適合這個問題..
謝謝,
將所有命令放在子分析程序中
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
則應該具有值為'1'
或'2'
的args.a
屬性。 該參數是必需的,因此指定默認值是沒有意義的。
從交互式ipython
shell:
In [13]: parser.parse_args(['b'])
Out[13]: Namespace(cmd='b')
In [14]: parser.parse_args(['c'])
Out[14]: Namespace(cmd='c')
In [15]: parser.parse_args(['a','1'])
Out[15]: Namespace(a='1', cmd='a')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.