#python #json #ini #configparser
#python #json #ini #configparser
Вопрос:
Я хочу прочитать значения json из файла config json. Путь к объекту json, который я использую в своем коде на Python, выглядит следующим образом:
jsonfile['Data'][0]['Tenants'][0]['TenPropertyGroup']
Теперь я хочу передать этот указанный выше путь "['Data'][0]['Tenants'][0]['TenPropertyGroup']"
из ini-файла, чтобы убедиться, что я могу вносить изменения в ini-файл, если путь к объекту будет изменен в файле json.
Мой config.ini
выглядит так:
[CONFIG]
TenPropertyGroup= ['Data'][0]['Tenants'][0]['TenPropertyGroups']
Мой код Python после чтения из ini-файла выглядит следующим образом
globalconfig = "config.ini"
config = configparser.ConfigParser()
config.read(globalconfig)
f = open(configfile, )
jsonfile = json.load(f)
TenPropertyGroup = config['CONFIG']['TenPropertyGroup']
TenPropertyGroups = (str(jsonfile ) TenPropertyGroup)
Но когда я читаю на Python, используя configparser
вышеуказанную группу свойств, имеет строковый тип данных, и я не могу получить список из файла json.
Я пытаюсь правильно прочитать этот ini из кода python, но не могу преобразовать его в object.
Комментарии:
1.
eval(TenPropertyGroups)
?2.
eval(TenPropertyGroups)
выдает ошибку какinvalid syntax (<string>, line 1)
Ответ №1:
Я бы предложил другой подход. Вам следует избегать выполнения текста, прочитанного из файла по соображениям безопасности. Если вы используете другой формат для значения вашего ini файла, вы можете проанализировать его и использовать значения для детализации вашего объекта json. Вот простой пример:
path_from_ini = 'x/y/z'
json_dict = { 'x' : { 'y' : { 'z' : 42 } } }
parts = path_from_ini.split('/')
v = json_dict
# Drill down into the JSON dictonary
for p in parts:
v = v[p]
print(v)
Комментарии:
1. Привет, спасибо за ответ, но я хотел сделать путь независимым от кода, потому что, если мой объект json будет изменен в данном файле json, мне нужно будет снова изменить код, чтобы внести изменения в path. например, если путь от
x/y/z
будет изменен наx/w/y/z
, тогда мне нужно будет изменитьconfig.ini
и мой файл Python также.2. Спасибо за решение, оно решило мою проблему. Изначально я неправильно понял
json_dict
часть вашего кода. Позже я получил его и попробовал решение, и оно работает. Большое спасибо за помощь