如何对互斥组进行论证?

How to make arguments to mutually exculsive group?

我有一个互斥组,用户可以从中选择 --execute, --delete, --create。我怎样才能使参数仅适用于特定组?例如 --execute {filename}--create -fn {filename} -p {path}--delete {filename}。如何对可选参数进行分组,以便它们只能在特定组中使用?

三个“选项”--execute--delete--create 看起来应该是子命令而不是 optional 标志。

为此,使用 ArgumentParser.add_subparsers()

from argparse import ArgumentParser


parser = ArgumentParser()
sub = parser.add_subparsers()

execute = sub.add_parser('execute')
execute.add_argument('filename')

create = sub.add_parser('create')
create.add_argument('-fn')
create.add_argument('-p')

当时的用法是

  • program execute {filename}
  • program create -fn {filename} -p {path}

您甚至可以为子解析器创建一个别名:

sub.add_parser('execute', aliases=['e'])

这也允许您这样调用程序:

  • program e {filename}

:

无法使用 --execute-e 作为子解析器的命令,因为在键入 program --execute {filename} 时, --execute 部分被解释为标志对于根解析器而不是作为子命令。