python单击命令的详细帮助

时间:2018-08-15 12:36:20

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

是否可以获取有关单击命令的单独详细帮助?例如,打印该命令的选项/参数。

此cli的示例:

import click

@click.group()
def cli():
    pass

@cli.command()
@click.argument('arg1')
@click.option('--option1', default=1)
def cmd1(arg1):
    print(arg1)

if __name__ == '__main__':
    cli()

默认帮助仅提供以下信息:

> python cli.py --help

Usage: cli.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  cmd1

我想要这样的东西:

> python cli.py --help cmd1

...
Command cmd1
Arguments:
    arg1
Options:
    --option1
....

这可能吗?

1 个答案:

答案 0 :(得分:1)

如果在命令后加上--help,将会得到您想要的。

python cli.py cmd1 --help

测试代码:

import click

@click.group()
def cli():
    pass

@cli.command()
@click.argument('arg1')
@click.option('--option1', default=1)
def cmd1(arg1):
    print(arg1)


if __name__ == "__main__":
    commands = (
        'cmd1 --help',
        '--help',
        '',
    )

    import sys, time

    time.sleep(1)
    print('Click Version: {}'.format(click.__version__))
    print('Python Version: {}'.format(sys.version))
    for cmd in commands:
        try:
            time.sleep(0.1)
            print('-----------')
            print('> ' + cmd)
            time.sleep(0.1)
            cli(cmd.split())

        except BaseException as exc:
            if str(exc) != '0' and \
                    not isinstance(exc, (click.ClickException, SystemExit)):
                raise

结果:

Click Version: 6.7
Python Version: 3.6.3 (v3.6.3:2c5fed8, Oct  3 2017, 18:11:49) [MSC v.1900 64 bit (AMD64)]
-----------
> cmd1 --help
Usage: test.py cmd1 [OPTIONS] ARG1

Options:
  --option1 INTEGER
  --help             Show this message and exit.
-----------
> --help
Usage: test.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  cmd1
-----------
> 
Usage: test.py [OPTIONS] COMMAND [ARGS]...

Options:
  --help  Show this message and exit.

Commands:
  cmd1