如何对互斥组进行论证?
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
部分被解释为标志对于根解析器而不是作为子命令。
我有一个互斥组,用户可以从中选择 --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
部分被解释为标志对于根解析器而不是作为子命令。