Как передать список / массив в качестве аргумента в огонь Python? - PullRequest
1 голос
/ 30 июня 2019

У меня есть такая функция -

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\"]

тот же результат.

Ответы [ 2 ]

2 голосов
/ 30 июня 2019

Ваш список будет сначала проанализирован оболочкой командной строки. Это означает, что вам нужно использовать это как один аргумент. Есть много способов сделать это:

  1. Без пробела: [one,two]

  2. Выйти из пространства: [one,\ two]

  3. Цитаты: `" [один, два] ".

Обратите внимание, что вы можете изменить свою функцию, чтобы получить список аргументов, используя следующий синтаксис:

def my_func(*args):

Имя args здесь является соглашением, но это просто имя переменной, поэтому оно может быть любым. Это позволит вам вызывать вашу функцию как

fire_runner.py my_func one two
0 голосов
/ 30 июня 2019

Не оставляя пробела после того, как запятая сработала для меня.

fire_runner.py my_func [one,two]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...