Как преобразовать аргументы консоли Python в dict, используя json.loads? - PullRequest
0 голосов
/ 27 сентября 2019

У меня есть 2 файла: crawler.py и runner.py

И простой словарь вроде:

action_dict={'create 
user':3.0,'edit 
user':5.0,'delete user':2.0}

Я хочу отправить action_dict в качестве аргумента от runner к crawler.py черезокна cmd.Я пытался использовать Json.dump.Примерно так (в runner.py):

arg_to_cmd = 
json.dumps(action_dict)
cmd = 'python crawler.py ' + arg_to_cmd

Затем в crawler.py я попытался его получить:

args=sys.argv[1:]
if args:
 diet_from_runner=json.dumps.loads(args[0])

Также я попытался разобрать его без дампа.Я посылаю строку как:

str_action_dict='{"create 
user":3.0,"edit 
user":5.0,"delete user":2.0}'

Также я пытался изменить строку из аргументов, и лучшее, что я мог получить, это строка из json.loads.Итак, как получить словарь с JSON?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Вы можете просто позвонить json.loads() по входным параметрам:

import sys
import json

params = sys.argv[1:]
assert(type(json.loads(params[0])) == dict)
0 голосов
/ 27 сентября 2019

Вы можете использовать literal_eval для преобразования строкового представления (аргументов консоли Python) словаря в объекты Python как:

import ast
js = "{'create user':3.0,'edit user':5.0,'delete user':2.0}"
out=ast.literal_eval(js)
print(out)
# {'create user': 3.0, 'edit user': 5.0, 'delete user': 2.0}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...