最近发现了click,我想将一个未指定数量的kwargs传递给click命令.目前这是我的命令:
@click.command()
@click.argument('tgt')
@click.argument('fun')
@click.argument('args', nargs=-1)
def runner(tgt, fun, args):
req = pyaml.p(meh.PostAdapter(tgt, fun, *args))
click.echo(req)
但是当使用nargs时,任何超过1的内容都会作为元组传递([docs] [1]),不幸的是我无法输入= dict.
但应该可以做这样的事情:
命令位置1位置2 foo =’bar’baz =’qux’xxx =’yyy’
在此期间感谢您的任何帮助或建议,与此同时,我将继续为此而努力.
最佳答案 使用@rmn提供的链接,我重写了我的click命令,如下所示:
@click.command(context_settings=dict(
ignore_unknown_options=True,
allow_extra_args=True,
))
@click.pass_context
def runner(ctx, tgt, fun):
d = dict()
for item in ctx.args:
d.update([item.split('=')])
req = pyaml.p(meh.PostAdapter(tgt, fun, d))
click.echo(req)
这允许我正确发出以下命令:
mycmd tgt fun foo =’bar’baz =’qux’xxx =’yyy’