选择Python ArgumentParser中的两个参数中的一个。

huangapple go评论71阅读模式
英文:

Choose only one from 2 args with Python ArgumentParser

问题

我使用ArgumentParser来解析函数的一些参数。

我想限制用户只能使用countshow中的一个,不能同时使用两者。

如何限制这一点?

parser = argparse.ArgumentParser(
    formatter_class=argparse.RawTextHelpFormatter,
    description="""一些描述""",
)

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,
)
英文:

I use ArgumentParser to parse some arguments for function.

I want to limit that that user can use or count or show, he can't use then both.

How can I limit that?

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,
    
)

答案1

得分: 2

你可以使用argparse中的互斥组来限制特定参数的使用。

parser = argparse.ArgumentParser(
    formatter_class=argparse.RawTextHelpFormatter,
    description="一些描述",
)

group = parser.add_mutually_exclusive_group()
group.add_argument(
    "--show",
    "-s",
    action="store_true",
    help="显示某些内容",
)
group.add_argument(
    "--decode",
    "-d",
    action="store_true",
    help="解码某些内容",
)

parser.add_argument(
    "--count",
    "-c",
    type=int,
    default=1,
    help="计算某些内容",
)

args = parser.parse_args()
英文:

You can use mutually exclusive groups in argparse to limit the use of certain arguments.

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()

答案2

得分: 1

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

group = parser.add_mutually_exclusive_group(required=True)

group.add_argument(...)
group.add_argument(...)
group.add_argument(...)
英文:

The add_mutually_exclusive_group method creates a new mutually exclusive argument group. The required=True argument ensures that the user has to select one of the options in the group.

group = parser.add_mutually_exclusive_group(required=True)

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

huangapple
  • 本文由 发表于 2023年3月3日 20:37:06
  • 转载请务必保留本文链接:https://go.coder-hub.com/75627164.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定