Kedro:如何从命令行传递"list"参数?



我想通过命令行控制 kedro 参数。

根据文档,kedro 可以指定运行时参数,如下所示:

kedro run --params key:value
> {'key': 'value'}

它有效。同样,我尝试指定如下列表参数:

kedro run --params keys:['value1']
> {'keys': '[value1]'}

它不起作用,因为 kedro 插播不是列出而是 str。也许,这个答案可能是相关的。

希望提到几件事,使 kedro 评估列表参数,如 yaml。

默认情况下,kedro命令行不会对简单数值类型以外的参数进行类型转换。更复杂的参数应通过parameters.yml文件处理。

也就是说,如果你真的想这样做,你可以修改你的kedro_cli.py来支持这一点。具体来说,您需要修改文件中的_split_params回调函数。这里最简单的事情可能是更改读取的行

result[key] = _try_convert_to_numeric(value)

处理将简单数字类型解析为

result[key] = json.loads(value)

以使其解析更广泛的类型。也就是说,解析您作为json传入的 CLI 参数(因此您还需要注意引号并确保传入有效的json语法。

如果这不起作用,您可以尝试添加自己的语法并在该函数中解析它。但是,我的建议是避免依赖 CLI 中脆弱的字符串参数评估,而是改用parameters.yml

除了Zain的答案之外,还可以使用CLI配置指定额外的参数。其中config.yml如下所示:

run:
params:
keys: [value1]

但要再次强调:我们强烈建议不要在额外的 CLI 参数中添加复杂的结构。建议的方法是为此利用配置环境。

相关内容

  • 没有找到相关文章