Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 26, 2011 17:03:54

Dimmi
От:
Зарегистрирован: 2011-10-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос про парсинг конф. файла

Добрый день!
Начну с того, что с программированием вообще я знаком очень поверхностно. А с питоном в частности еще поверхностней. Теперь по сути.
Есть текстовый файл с конфигом маршрутизатора, файл большой. Для примера приведу отрывок:

  PDSN Service:
In Use : 1
Max PDSN Used : 2 ( Thursday June 1 22:26:33 MSD 2011 )
Limit : 3
License Status : Within Acceptable Limits
EV-DO Rev A PDSN Service:
In Use : 4
Max EV-DO Rev A PDSN Used : 5 ( Monday October 1 14:36:33 MSD 2011 )
Limit : 6
License Status : Within Acceptable Limits
В этом файле нужно найти определенные данные и их значения. Для приведенного куска нужно получить после парсинга примерно такое - PDSN Service:1,2,3 EV-DO Rev A PDSN Service:4,5,6
Есть “заготовка скрипта” которая может такое делать, и предполагается что я там немного поправлю и все заработает. Но я даже полностью прочитать этот скрипт не могу.
Помогите пожалуйста прочитать его. Что сам понял подписал, что не понял подписал - ?.
Еще если подскажите что почитать конкретно про парсинг буду очень признателен.
Заранее очень благодарю за помощь.



Офлайн

#2 Окт. 26, 2011 17:05:36

Dimmi
От:
Зарегистрирован: 2011-10-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос про парсинг конф. файла

не нашел как приатачить файл. вот скрипт.

from fabfile import basedir
import os.path
import re

hosts = [ '1', '2', '3' ]
#файлы которые парсим

re_dict = { #словарь
'Number of Managers': re.compile("(?P<field>Number of Managers) : (?P<value>[0-9]{1,3})"),#?
}#словарь закончился

result = {}

def print_report(result):#объявление функции
for k, l in result.items():#?
host, param = k#?
print 'Host: ' + host + ', Parameter: ' + param + ', Value: ' + ' '.join(l)#вывести на экран "Host "значение host" Parameter "значение param" и тд"



def main():# функция main
for host in hosts:#цикл
file = open(os.path.join(basedir, host), 'r')#создать файл. наверное в директории из которой запущен скрипт. открыть для чтения.
for line in file.readlines():#цикл и еще что?
for k, v in re_dict.items():#цикл и еще что?
s = v.search(line)#?
if s is not None:#если переменная s имеет значение
result.setdefault((host, k), []).append(s.groupdict().get('value'))#?
file.close()#закрыть файл
print_report(result)#выполнить функцию, с аргументом резалт

main()



Офлайн

#3 Окт. 26, 2011 17:52:12

Vader
От:
Зарегистрирован: 2010-01-30
Сообщения: 152
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос про парсинг конф. файла

Сначала все-таки разбираетесь с питоном.

После этого устанавливаете модуль pyyaml

easy_install pyyaml
Дальше делаете с вашим конфигом все что душе угодно.
>>> import yaml
>>> f = open(r'C:\test\config.txt', 'r')
>>> data = yaml.load(f, Loader=yaml.Loader)
>>> data['EV-DO Rev A PDSN Service']['In Use']
4



Отредактировано (Окт. 26, 2011 17:55:00)

Офлайн

#4 Окт. 26, 2011 19:09:28

Dimmi
От:
Зарегистрирован: 2011-10-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

вопрос про парсинг конф. файла

Vader
Сначала все-таки разбираетесь с питоном.

После этого устанавливаете модуль pyyaml
easy_install pyyaml
Дальше делаете с вашим конфигом все что душе угодно.
>>> import yaml
>>> f = open(r'C:\test\config.txt', 'r')
>>> data = yaml.load(f, Loader=yaml.Loader)
>>> data['EV-DO Rev A PDSN Service']['In Use']
4
Спасибо за ответ.
Что Вы имеете в виду под разберательством с питоном? Я так понял pyyaml это некий модуль для парсинга. Подскажите пожалуйста где можно об этом прочитать так, чтобы с самого начала?
В Вашем коде мало что понял, поясните пожалуйста.
Дмитрий.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version