有没有一种方法可以通过单击捕获任意选项(由用户提供)?

时间:2019-01-14 15:50:21

标签: python python-3.x command-line-interface python-click

我正在研究一个小的Python脚本,该脚本通过单击公开了CLI。我希望我的脚本接受用户提供的“任意”选项,例如--my-fancy-option 7

我想到的是这样的:

import json
import click

@click.command()
@click.option(
    '--param',
    default = 'default', type = str,
    help = 'some string',
    )
@click.option(
    '--extra_param',
    default = '{}', type = str,
    help = 'JSON string with extra paramters',
    )
def cli(param, extra_param):
    try:
        extra_param = json.loads(extra_param)
    except:
        extra_param = {}
    print(param, extra_param)

从本质上讲,它是基于JSON解析的黑客。因此,我的用户可以按照--extra_param '{"my-fancy-option": 7}'的方式进行操作。

我如何(如果可能的话)使用click来实现功能签名,例如def cli(param, **kwargs),从而允许我的用户直接指定--my-fancy-option 7,而不必弄乱JSON和与shell相关的内容引号和转义问题?

0 个答案:

没有答案