click lib 是否提供打印内置帮助消息的方法?

Does click lib provide a way to print the builtin help message?

我正在使用 click 库。

在我的代码中,有时我想打印帮助消息, 但我知道的唯一方法是:

python xxx --help

但我想使用特定函数在我的代码中打印帮助消息,例如:

click.print_help_msg()

有这样的功能吗?

我修改了 click 文档中的示例并想出了这个,但我以前没有使用过它,或者测试了下面的代码。

@click.command()
@click.option('--help')
def help():
    """Simple program that greets NAME for a total of COUNT times."""
    for x in range(count):
        click.echo(get_help_message())

def get_help_message():
    return "I AM A HELP MESSAGE!"

这样的东西行不通吗?

您可以使用 click.echo 这样的东西:

click.echo('FooBar')

echo 还支持颜色代码和基于类型的过滤,例如:

click.echo('FooBar', err=True)

可以参考documentation了解更多。

您可以使用 Command 的 get_help 方法

import click

@click.command()
@click.option('--name', help='The person to greet.')
def hello(name):
    """Simple program that greets NAME."""
    click.echo('Hello %s!' % name)

def print_help_msg(command):
    with click.Context(command) as ctx:
        click.echo(command.get_help(ctx))

>> print_help_msg(hello)

点击 5.x 您现在可以使用 get_current_context() 方法:

def print_help():
    ctx = click.get_current_context()
    click.echo(ctx.get_help())
    ctx.exit()

如果您只想打印一条错误消息并退出,请尝试:

def exit_with_msg():
    ctx = click.get_current_context()
    ctx.fail("Something unexpected happened")