我有一个互斥组,用户可以从--execute, --delete, --create
中选择。我怎样才能使论点只适用于特定的群体?例如:--execute {filename}
、--create -fn {filename} -p {path}
、--delete {filename}
。如何对可选参数进行分组,使它们只能在特定的组中使用?
三个选项"--execute
,--delete
和--create
看起来应该是子命令,而不是可选旗帜。
使用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
部分被解释为根解析器的标志,而不是子命令。