使用Python ArgumentParser仅从2个参数中选择一个

e5nszbig  于 2023-03-04  发布在  Python
关注(0)|答案(2)|浏览(207)

我使用ArgumentParser来解析函数的一些参数。
我想限制用户只能使用或countshow,不能同时使用这两个变量。
我怎么能限制呢?

parser = argparse.ArgumentParser(
    formatter_class=argparse.RawTextHelpFormatter,
    description="""some desc""",
)

parser.add_argument(
    "count",
    nargs="?",
    type=lambda n: max(int(n, 0), 1),
    default=1,
    
)
parser.add_argument(
    "--show",
    "-s",
    action="store_true",
    default=False,
    
)
parser.add_argument(
    "--decode",
    "-d",
    action="store_true",
    default=False,
    
)
s3fp2yjn

s3fp2yjn1#

可以在argparse中使用互斥组来限制某些参数的使用。

parser = argparse.ArgumentParser(
    formatter_class=argparse.RawTextHelpFormatter,
    description="""some desc""",
)

group = parser.add_mutually_exclusive_group()
group.add_argument(
    "--show",
    "-s",
    action="store_true",
    help="Show something",
)
group.add_argument(
    "--decode",
    "-d",
    action="store_true",
    help="Decode something",
)

parser.add_argument(
    "--count",
    "-c",
    type=int,
    default=1,
    help="Count something",
)

args = parser.parse_args()
hgc7kmma

hgc7kmma2#

add_mutually_exclusive_group方法创建一个新的互斥参数组。required=True参数确保用户必须选择组中的一个选项。

group = parser.add_mutually_exclusive_group(required=True)

group.add_argument(...)
group.add_argument(...)
group.add_argument(...)

相关问题