Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Python парсинг конфига ConfigObj  [new]
MikeTech
Member

Откуда: Moscow
Сообщений: 118
Доброе утро.

Есть задача найти в конфиге ключ и его значение и корневую секцию. Работаю под debian 8.5 и Python 2.7.9
Сам конфиг иерархический и выглядит так:

[20]
    [[9901]]
    pdu_length = 10
    value_length = 2
	[[[8501000000000000]]]
	description = "T sensor 08501#1"
	oh_name = Temperature_8501000000000000
	value_modificator = "/100"
	value_sign = True
	little_endian = True
	is_interactive = False
	is_report = True
	sender_name = "Window_childrens_dimmer"
[19]
    [[8303]]
    pdu_length = 0
    value_length = 0
	[[[8303_fake]]]
	description = "Discharge sensor 8303"
	oh_name = LowPower_8303000000000000
	custom_value = "ON"
	is_interactive = False
	is_report = True
	sender_name = "Window_childrens_dimmer1"


Нужно найти sender_name по его значению и получить верхнюю к нему секцию.
Например для Window_childrens_dimmer1 нужно найти, ключ со значением sender_name = "Window_childrens_dimmer1" и получить его "верх " = 19
Для Window_childrens_dimmer соответственно sender_name = "Window_childrens_dimmer" и 20

С помощью walk решается задача поиска ключа со значением, как найти "верх" для него придумать не могу. Нужна помощь.

P.S. Ключ ищу так:

def gather_subsection_key(section, key, search_string, search_section, res):
	if key==search_section: 
		print ("=========FOUND KEY===============")
		print ("SECTION NAME:" + section.name)
		print ("SECTION DEPT:" + str(section.depth))
		print ("KEY:" + key)
		if section[key]==search_string:
			print ("=========FOUND VALUE=============")
			print ("SECTION:" + section.name)
			print ("KEY:" + key)
			print ("VALUE:" + section[key])
			print ("RETURNED:" + section.name)
			print ("=================================")
			res.append(section.name) 

conf = ConfigObj("/root/rs485_sniff/rs485dispatcher_sender.conf")
conf.walk(gather_subsection_key,call_on_sections=False,search_string=dict_var['name'],search_section="sender_name",res=walk_res)
5 дек 18, 09:11    [21753934]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить