簡體   English   中英

Kedro:如何從命令行傳遞“列表”參數?

[英]Kedro: How to pass “list” parameters from command line?

我想通過命令行控制 kedro 參數。

根據docs ,kedro 可以指定運行時參數,如下所示:

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

有用。 同樣,我嘗試像這樣指定列表參數:

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

它不起作用,因為 kedro interplets不是 list 而是 str 可能,這個答案可能是相關的。

希望提到一些事情,讓 kedro 評估列表參數,如 yaml。

默認情況下, kedro命令行不會對更簡單的數字類型之外的參數進行類型轉換。 更復雜的參數應該通過parameters.yml文件來處理。

也就是說,如果你真的想這樣做,你可以修改你的kedro_cli.py來支持它。 具體來說,您需要修改文件中的_split_params回調 function。 這里最簡單的事情可能是更改讀取的行

result[key] = _try_convert_to_numeric(value)

它處理將簡單的數字類型解析為

result[key] = json.loads(value)

使其解析更廣泛的類型。 也就是說,將您傳入的 CLI 參數解析為json (因此您還需要注意引號並確保傳入有效的json語法。

如果這不起作用,您可以嘗試添加自己的語法並在 function 中解析它。 但是,我的建議是避免依賴 CLI 中脆弱的字符串參數評估,而是使用parameters.yml

除了 Zain 的回答之外,還可以使用CLI config指定額外的參數。 config.yml看起來像這樣:

run:
  params:
    keys: [value1]

但再次強調:我們強烈建議不要在額外的 CLI arguments 中添加復雜結構。 建議的方法是為此使用配置環境

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM