Python Click:如何实现类似于“--help”的帮助命令?

Jes*_*ieh 3 python python-click

我有一个 python click CLI。当我传递--help给任何命令时,它会打印一条我喜欢的帮助消息。我发现现在很多用户都在打字

mycli help foo
Run Code Online (Sandbox Code Playgroud)

代替

mycli foo --help
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以使前者像后者一样以通用方式对所有命令起作用?

该命令的实现大致如下

@click.group()
@click.pass_context
def cli(ctx):
    ctx.obj = {}

@cli.command()
@click.argument('my_arg')
@click.pass_context
@report_errors
def foo(ctx, my_arg):
    # some stuff here
Run Code Online (Sandbox Code Playgroud)

jwo*_*der 5

click.Command对象有一个get_help()返回其--help字符串的方法。将此与组的get_command()查找子命令的方法相结合,类似这样的方法应该可以工作(未经测试):

@cli.command()
@click.argument('subcommand')
@click.pass_context
def help(ctx, subcommand):
    subcommand_obj = cli.get_command(ctx, subcommand)
    if subcommand_obj is None:
        click.echo("I don't know that command.")
    else:
        click.echo(subcommand_obj.get_help(ctx))
Run Code Online (Sandbox Code Playgroud)

  • 我在上面添加了一行“ctx.info_name = subcommand”,这似乎有效。 (3认同)