首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kedro:如何从命令行传递"list“参数?

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

Stack Overflow用户
提问于 2020-06-20 23:19:17
回答 2查看 1.5K关注 0票数 1

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

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

代码语言:javascript
复制
kedro run --params key:value
> {'key': 'value'}

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

代码语言:javascript
复制
kedro run --params keys:['value1']
> {'keys': '[value1]'}

它不能工作,因为kedro 不是列表,而是str。可能,这个答案可能是相关的。

希望能提几件事让kedro评估像yaml这样的列表参数。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-21 00:48:49

默认情况下,除了简单的数字类型之外,kedro命令行不会键入参数。应该通过parameters.yml文件处理更复杂的参数。

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

代码语言:javascript
复制
result[key] = _try_convert_to_numeric(value)

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

代码语言:javascript
复制
result[key] = json.loads(value)

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

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

票数 3
EN

Stack Overflow用户

发布于 2020-06-22 10:25:45

除了Zain的回答之外,还可以使用CLI配置指定额外的参数。在其中,config.yml看起来类似于:

代码语言:javascript
复制
run:
  params:
    keys: [value1]

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62492785

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档