[英]How to pass a list/array as argument to python fire?
我有這樣的功能-
def my_func(my_list_arg=["one", "two"]):
我試圖使用python-fire
從命令行調用它。
我嘗試了幾種方法-
嘗試1:
fire_runner.py my_func [one, two]
產生兩個單獨的參數"[one"
和"two]"
。
嘗試2:
fire_runner.py my_func ["one", "two"]
結果相同。
嘗試 3:
fire_runner.py my_func [\"one\", \"two\"]
同樣的結果。
您的列表將首先由命令行 shell 解析。 這意味着您需要將其強制為單個參數。 有很多方法可以做到這一點:
沒有空格: [one,two]
逃離空間: [one,\ two]
引號: "[one, two]"
。
請注意,您可以使用以下語法修改函數以獲取參數列表:
def my_func(*args):
這里的名稱args
是約定俗成的,但它只是一個變量名,所以它可以是任何東西。 這將允許您將您的函數稱為
fire_runner.py my_func one two
逗號對我有用后沒有保留任何空格。
fire_runner.py my_func [one,two]
僅針對特殊情況添加此答案。
鑒於您的功能是這樣的:
def my_func(dates: List[str] = []):
...
如果您需要從 CLI 發送日期列表(或數字和字符的任意組合),以下將不起作用。
fire_runner.py my_func --dates 2021-09-20,
fire_runner.py my_func --dates "[2021-09-20]"
fire_runner.py my_func --dates [2021-09-20]
在上述所有情況下,日期將被讀取為一個字符串而不是字符串列表。 為了正確閱讀字符串列表,您可以使用以下內容。
fire_runner.py my_func --dates "[\"2021-09-20\"]"
fire_runner.py my_func --dates "[\"2021-09-20\", \"2021-09-76\"]"
Fire 將逗號分隔的數字字符串轉換為元組,如下所示:
fire_runner.py my_func 1,2,3
對於逗號分隔的字符串,您可以使用:
fire_runner.py my_func \'2021-2\',\'20212-3\',\'2023-4\'
為一個元素列表添加特殊的極端情況解決方案,因為上述語法似乎不起作用(列表被解析為以[
開頭的字符串):
fire_runner.py my_func "['one']"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.