我正在研究一个小的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相关的内容引号和转义问题?