Найти - Пользователи
Полная версия: Подскажите парсер для конфиг-файла, чем можно распарсить данный конфиг ?
Начало » Python для новичков » Подскажите парсер для конфиг-файла, чем можно распарсить данный конфиг ?
1
fr0st84
Всем привет,
Подскажите, есть ли уже готовые средства для парсинга содержимого конфиг-файл вот с такой струкутурой,
чтобы не писать парсер самому.

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 ?
Если это так, интересует рабочий код

Всем заранее Спасибо)
PooH
Ну вот так примерно так, 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')
FishHook
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
fr0st84
То что нужно. Большое всем спасибо за помощь. Очень оперативно и по делу.
Пошел учить матчасть
Всем удачи.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB