使用Python的点击库的任意命令行关键字

时间:2016-11-22 17:53:00

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

我有一个使用Python click库构建的命令行工具。我想扩展此工具以使用用户定义的关键字,如下所示:

$ my-cli --foo 10 --bar 20

通常我会将以下代码添加到我的命令

@click.option('--foo', type=int, default=0, ...)

但在我的情况下,有一些用户定义的关键字。我不知道用户想要提前查看foo或bar或其他东西。

一种解决方案

目前,我最好的解决方案是使用字符串并进行自己的解析

$ my-cli --resources "foo=10 bar=20"

哪种方法有效,但稍微不那么愉快。

1 个答案:

答案 0 :(得分:3)

我认为这应该有效:

import click


@click.command(context_settings=dict(ignore_unknown_options=True,))
@click.option('-v', '--verbose', is_flag=True, help='Enables verbose mode')
@click.argument('extra_args', nargs=-1, type=click.UNPROCESSED)
def cli(verbose, extra_args):
    """A wrapper around Python's timeit."""
    print(verbose, extra_args)


if __name__ == "__main__":
    cli()

测试:

$ python test.py --foo 12
False ('--foo', '12')

$ python test.py --foo 12 -v
True ('--foo', '12')

来自:http://click.pocoo.org/5/advanced/#forwarding-unknown-options