簡體   English   中英

如何使用python argparse解析可選參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM