Форум сайта python.su
Добрый день. Столкнулся в проблемой парсинга csv файла и созданием конфигурационных файлов по данным таблицы. Я написал небольшой код. Программа берет csv файл и разбирает его по делителям. Выписывает в консоль и в файл построчно данные. Необходимо чтобы программа либо генерировала новый конфиг ( шаблон уже готов и есть переменные, которые в зависимости от строки менялись) или парсила уже готовый шаблон и вставляла в нужное место нужное значение. Затруднение в том, что программа выдает данные построчно:
1, 2, IF-MIB::ifDescr.51 = STRING: GigabitEthernet6/0/40, 192.33.73.124/24
необходимо чтобы из первого и второго собирался HOSTNAME, из остальных так же собирался IP адрес и т.п. и вставлялся в определенные места шаблона. Побывал разные способ, читал мануал http://docs.python.org/2/library/csv.html , но не могу найти как решить проблему. Прошу помощи у спецов)
Шаблон в который вставлять ( генерировать) выглядит так :
<?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>2.0</version> <date>2013-07-31T11:56:38Z</date> <groups> <group> <name>Object</name> </group> </groups> <hosts> <host> <host>HOSTNAME</host> <name>HOSTNAME</name> <proxy/> <status>0</status> <ipmi_authtype>-1</ipmi_authtype> <ipmi_privilege>2</ipmi_privilege> <ipmi_username/> <ipmi_password/> <templates> <template> <name>Template PING </name> </template> </templates> <groups> <group> <name>Object</name> </group> </groups> <interfaces> <interface> <default>1</default> <type>2</type> <useip>1</useip> <ip>192.33.73.124</ip> <dns/> <port>161</port> <interface_ref>if1</interface_ref> </interface> </interfaces> <applications/> <items/> <discovery_rules/> <macros/> <inventory/> </host> </hosts> </zabbix_export>
# -*- coding: utf-8 -*- import csv i = 0 with open ('csv.csv') as csvfile: finder = csv.reader (csvfile, delimiter = ',', quotechar = ';') for row in finder : file = open("test"+str(i)+".xml", "w") i = i +1 print ', '.join(row) file.close()
Офлайн
Может стоит использовать шаблонизаторы?
Your text to link here…
Офлайн
Шаблон в который вставлять ( генерировать) выглядит так
template = ''' <?xml version="1.0" encoding="UTF-8"?> <zabbix_export> <version>2.0</version> <date>{0}</date> <groups> <group> <name>Object</name> </group> </groups> <hosts> <host> <host>{1}</host> .... ''' content = template.format(date,hostname) with open('myfile.xml','w') as f: f.write(content)
Отредактировано Alen (Авг. 4, 2013 19:59:48)
Офлайн