Kedro:如何从命令行传递 "list" 参数?
Kedro: How to pass "list" parameters from command line?
我想通过命令行控制kedro参数。
根据docs,kedro可以指定运行参数如下:
kedro run --params key:value
> {'key': 'value'}
有效。同样,我尝试指定 list 参数,如下所示:
kedro run --params keys:['value1']
> {'keys': '[value1]'}
它不起作用,因为 kedro interplets 不是列表而是 str。可能 可能相关。
希望提及几件事以使 kedro 评估像 yaml 这样的列表参数。
默认情况下,kedro
命令行不会对更简单的数字类型以外的参数进行类型转换。应该通过 parameters.yml
文件处理更复杂的参数。
也就是说,如果您真的想要这样做,您可以修改您的kedro_cli.py
以支持它。具体来说,您需要修改文件中的 _split_params
回调函数。这里最简单的事情可能是更改读取
的行
result[key] = _try_convert_to_numeric(value)
处理将简单数字类型解析为
result[key] = json.loads(value)
让它解析更广泛的类型。也就是说,将您传入的 CLI 参数解析为 json
(因此您还需要注意引号并确保传入有效的 json
语法。
如果这不起作用,您可以尝试添加自己的语法并在该函数中对其进行解析。但是,我的建议是避免依赖来自 CLI 的脆弱字符串参数评估,而是使用 parameters.yml
。
除了 Zain 的 , one can specify extra params using the CLI config。其中 config.yml
看起来像:
run:
params:
keys: [value1]
但再次强调:我们强烈建议不要在额外的 CLI 参数中添加复杂的结构。建议的方法是为此使用 configuration environments。
我想通过命令行控制kedro参数。
根据docs,kedro可以指定运行参数如下:
kedro run --params key:value
> {'key': 'value'}
有效。同样,我尝试指定 list 参数,如下所示:
kedro run --params keys:['value1']
> {'keys': '[value1]'}
它不起作用,因为 kedro interplets 不是列表而是 str。可能
希望提及几件事以使 kedro 评估像 yaml 这样的列表参数。
默认情况下,kedro
命令行不会对更简单的数字类型以外的参数进行类型转换。应该通过 parameters.yml
文件处理更复杂的参数。
也就是说,如果您真的想要这样做,您可以修改您的kedro_cli.py
以支持它。具体来说,您需要修改文件中的 _split_params
回调函数。这里最简单的事情可能是更改读取
result[key] = _try_convert_to_numeric(value)
处理将简单数字类型解析为
result[key] = json.loads(value)
让它解析更广泛的类型。也就是说,将您传入的 CLI 参数解析为 json
(因此您还需要注意引号并确保传入有效的 json
语法。
如果这不起作用,您可以尝试添加自己的语法并在该函数中对其进行解析。但是,我的建议是避免依赖来自 CLI 的脆弱字符串参数评估,而是使用 parameters.yml
。
除了 Zain 的 config.yml
看起来像:
run:
params:
keys: [value1]
但再次强调:我们强烈建议不要在额外的 CLI 参数中添加复杂的结构。建议的方法是为此使用 configuration environments。