Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 4, 2012 12:57:49

fr0st84
Зарегистрирован: 2012-09-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите парсер для конфиг-файла, чем можно распарсить данный конфиг ?

Всем привет,
Подскажите, есть ли уже готовые средства для парсинга содержимого конфиг-файл вот с такой струкутурой,
чтобы не писать парсер самому.

ui_translate.add(id="ui_dict_config_FC_Board_name",
                   lang="en",
                   cli_option="id",
                   cli_label="FC Board ID",
                   gui_label="FC Board ID",
                   translation=[])
ui_translate.add(id="ui_dict_config_FC_Board_type",
                   lang="en",
                   cli_option="type",
                   cli_label="Type",
                   gui_label="Name:Type",
                   translation=[("I0", "C12:INITIATOR"),
                ("I1", "C13:INITIATOR"),
                ("F1", "caX:FICON"),
                ("F2", "caX:FICON"),
                ("F3", "caX:FICON")])
ui_translate.add(id="ui_dict_config_FC_Board_mode",
                   lang="en",
                   cli_option="mode",
                   cli_label="Mode",
                   gui_label="Mode",
                   translation=[])

Есть мнение что это код питона.
Однако я считаю, что структура лишь сходна с кодом питона, но синтаксически неверна.
Или я не прав, и достаточно создать объект ui_translate и сделать import ?
Если это так, интересует рабочий код

Всем заранее Спасибо)

Отредактировано fr0st84 (Сен. 4, 2012 12:59:55)

Офлайн

#2 Сен. 4, 2012 13:15:03

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

Подскажите парсер для конфиг-файла, чем можно распарсить данный конфиг ?

Ну вот так примерно так, proof of concept, предположим что ваш файл называется test.conf

class Config:
    
    def __init__(self):
        self.options = {}
        
    def add(self, **kwargs):
        if 'id' in kwargs and 'cli_label' in kwargs:
            self.options[kwargs['id']] = kwargs['cli_label']
            
    def __str__(self):
        return '\n'.join('%s: %s' % x for x in self.options.iteritems())
    
def load_config(filename):
    config = Config()
    execfile(filename, {'ui_translate': config}, {})
    return config
    
print load_config('test.conf')



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#3 Сен. 4, 2012 13:27:11

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Подскажите парсер для конфиг-файла, чем можно распарсить данный конфиг ?

with open('text.txt','r') as text:
    src=text.read()
class UiTranslateRecord(object):
    def __init__(self, **kw):
        for key, value in kw.items():
            setattr(self,key, value)
    def __repr__(self):
        return str(self.__dict__)
class UiTranslate(object):
    def __init__(self):
        self.items=[]
    def add(self, *args, **kw):
        self.items.append(UiTranslateRecord(**kw))
ui_translate=UiTranslate()
exec src
for i in ui_translate.items:
    print i



Офлайн

#4 Сен. 4, 2012 17:50:24

fr0st84
Зарегистрирован: 2012-09-04
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Подскажите парсер для конфиг-файла, чем можно распарсить данный конфиг ?

То что нужно. Большое всем спасибо за помощь. Очень оперативно и по делу.
Пошел учить матчасть
Всем удачи.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version