隐藏使用中的值列表 - 单击

时间:2017-11-06 16:04:05

标签: python python-2.7 command-line-interface python-click

我使用click.Choice来确定传递给命令选项的值是否存在于列表中。

列表很长,在打印使用信息时,它很难阅读。

是否可以使用click.Choice而不显示使用消息中所有可能值的列表?

我知道我可以在不使用click.Choice的情况下对其进行验证,但如果有办法点击它就会更好。

1 个答案:

答案 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