оценка файлов шаблонов в python - PullRequest
1 голос
/ 19 мая 2010

Я пытаюсь использовать python для перевода набора шаблонов в набор файлов конфигурации на основе значений, взятых из основного файла конфигурации. Однако у меня возникают определенные проблемы. Рассмотрим следующий пример файла шаблона.

file1.cfg.template

%(CLIENT1)s %(HOST1)s  %(PORT1)d  C  %(COMPID1)s
%(CLIENT2)s %(HOST2)s  %(PORT2)d  C  %(COMPID2)s

Этот файл содержит запись для каждого клиента. Существуют сотни таких файлов конфигурации, и я не хочу иметь логику для каждого типа файла конфигурации. Python должен выполнять замены и автоматически генерировать файлы конфигурации, учитывая набор глобальных значений, считанных из основного файла конфигурации xml. Тем не менее, в приведенном выше примере, если CLIENT2 не существует, как я могу удалить эту строку? Я ожидаю, что Python сгенерирует файл конфигурации, используя что-то вроде этого:

os.open("file1.cfg.template").read() % myhash

где myhash - это хэш параметров конфигурации из основного файла конфигурации, который может вообще не содержать CLIENT2. В случае, если он не содержит CLIENT2, я хочу, чтобы эта строка исчезла из файла. Можно ли вставить какой-нибудь блок 'IF' в файл и заставить его проанализировать python?

Спасибо за вашу помощь. Любые предложения приветствуются.

Ответы [ 3 ]

3 голосов
/ 19 мая 2010

Звучит так, будто вы переросли свое изначально простое решение для создания шаблонов.Может быть, вы должны перейти к чему-то вроде Jinja ?Просто реализовать стороннее решение может быть меньше головной боли, чем создать / продолжить поддерживать собственное решение.

Другие варианты:

0 голосов
/ 19 мая 2010

Учитывая, что файлы уже существуют, я бы установил значения по умолчанию для таких вещей, как CLIENT2 (при условии, что вы заранее знаете все возможные ключи). Возможно, вы можете установить значение по умолчанию на что-то необычное, чтобы вы могли сделать

config = os.open("file1.cfg.template").read() % myhash
config = [l for l in config.split('\n') if <l does not have unusual text>].join('\n')

Я согласен с другими, что в долгосрочной перспективе более надежный шаблон будет лучше.

0 голосов
/ 19 мая 2010

Может быть, вы можете использовать автономный шаблон Django.

Как использовать шаблоны Django без остальной части Django? - Переполнение стека

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...