Python argparse передавая список или словарь через командную строку - PullRequest
0 голосов
/ 12 февраля 2019

Я видел вопросы о передаче словарей и списков в Python с использованием библиотеки argparse.Все примеры показывают, как выглядит мой код Python.Но никто не показывает мне, как они выглядят в командной строке.Где мне нужны фигурные скобки, скобки и кавычки?

Итак, если бы я хотел параметры --my_dict и --my_list, как бы я указал их при вызове из командной строки?

ВотСуть того, чего я хочу достичь:

Python foo.py --my_dict="{'Name': 'Zara', 'Class': 'First'}" --my_list="['a', 'b', 'c']"

1 Ответ

0 голосов
/ 12 февраля 2019

Вы можете использовать ast.literal_eval для безопасного преобразования введенных пользователем строк в диктанты и списки Python:

import argparse
import ast
parser = argparse.ArgumentParser()
parser.add_argument('--my_dict', type=ast.literal_eval)
parser.add_argument('--my_list', type=ast.literal_eval)
args = parser.parse_args()
print(args)

Запуск

% python script.py --my_dict="{'Name': 'Zara', 'Class': 'First'}" --my_list="['a', 'b', 'c']"

выход

Namespace(my_dict={'Name': 'Zara', 'Class': 'First'}, my_list=['a', 'b', 'c'])
...