gpt4 book ai didi

Python Argparse add_mutually_exclusive_group() - 需要 2 个参数或仅 1 个参数

转载 作者:太空宇宙 更新时间:2023-11-03 18:37:26 25 4
gpt4 key购买 nike

我正在使用 Python 2.7 argparse。我需要它到用户可以输入参数(-a 和 -b)或(-c)的地方。但不能将(-a 和-b) 和(-c) 放在一起。如果用户选择(-a 和 -b)而不是 -c,则两者都是必需的。我怎样才能做到这一点?

group_key = member_add.add_mutually_exclusive_group(required=True)
group_key.add_argument('-a',
required=True)

group_key.add_argument('-b',
required=True)

group_key.add_argument('-c',
required=True)

最佳答案

add_mutually_exclusive_group() 的当前实现实际上并没有创建互斥的群体。有一个open bug解决此行为。

话虽如此,您可以使用以下方法实现此目的:

(a) subcommands

示例代码:

# create the top-level parser
parser = argparse.ArgumentParser()
subparsers = parser.add_subparsers(help='help for subcommand')

# create the parser for the "cmd_1" command
parser_a = subparsers.add_parser('cmd_1', help='help for cmd_1')
parser_a.add_argument('-a', type=str, help='help for a')
parser_a.add_argument('-b', type=str, help='help for b')

# create the parser for the "cmd_2" command
parser_b = subparsers.add_parser('cmd_2', help='help for cmd_2')
parser_b.add_argument('-c', type=str, help='help for c')
parser.parse_args()

(b) 针对像您这样的简单情况的小技巧:

ap=argparse.ArgumentParser()

# 1st group
ap.add_argument("-a", dest="value_a", help="help for a", required=False)
ap.add_argument("-b", dest="value_b", help="help for b", required=False)

# 2nd group
ap.add_argument("-c", dest="value_c", help="help for b", required=False)
args = ap.parse_args()

if (args.value_a or args.value_b):
if (args.value_a or args.value_b) and args.value_c:
print "-a and -b|-c are mutually exclusive ..."
elif not (args.value_a and args.value_b):
print "both -a and -b are required."

关于Python Argparse add_mutually_exclusive_group() - 需要 2 个参数或仅 1 个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21287828/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com