我使用click.Choice
来确定传递给命令选项的值是否存在于列表中。
列表很长,在打印使用信息时,它很难阅读。
是否可以使用click.Choice
而不显示使用消息中所有可能值的列表?
我知道我可以在不使用click.Choice
的情况下对其进行验证,但如果有办法点击它就会更好。
答案 0 :(得分:1)
click.Option()
类使用metavar
参数来允许在帮助消息中显示任意文本。
@click.option('--a_choice', metavar='MY_AWESOME_CHOICES', type=click.Choice(a_long_list))
import click
@click.command()
@click.option('--a_choice', metavar='MY_AWESOME_CHOICES',
type=click.Choice([str(j) for j in range(30)]))
def cli(a_choice):
click.echo("'{}': {}\n".format(cmd, a_choice))
cmds = (
'--help',
'--a_choice 5',
'--a_choice 10',
)
for cmd in cmds:
try:
cli(cmd.split())
except Exception:
raise
except:
pass
Usage: test.py [OPTIONS]
Options:
--a_choice MY_AWESOME_CHOICES
--help Show this message
and exit.
'--a_choice 5': 5
'--a_choice 10': 10