Kedro:如何从命令行传递“列表”参数?

2024-10-02 02:33:12 发布

您现在位置:Python中文网/ 问答频道 /正文

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

根据docs,kedro可以如下指定运行时参数:

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

它起作用了。同样,我尝试指定列表参数,如下所示:

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

它不起作用,因为kedro interplets不是list而是str。也许,this answer可能有关联

希望提及一些事情,使kedro能够评估列表参数,如yaml


Tags: keyrun命令行docs列表参数valueparams
2条回答

默认情况下,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的answer之外,还可以使用CLI config指定额外的参数。其中config.yml将类似于:

run:
  params:
    keys: [value1]

但要再次强调:我们强烈建议不要在额外的CLI参数中添加复杂结构。一种建议的方法是利用configuration environments来实现这一点

相关问题 更多 >

    热门问题