Найти - Пользователи
Полная версия: вопрос про парсинг конф. файла
Начало » Python для новичков » вопрос про парсинг конф. файла
1
Dimmi
Добрый день!
Начну с того, что с программированием вообще я знаком очень поверхностно. А с питоном в частности еще поверхностней. Теперь по сути.
Есть текстовый файл с конфигом маршрутизатора, файл большой. Для примера приведу отрывок:
  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
Есть “заготовка скрипта” которая может такое делать, и предполагается что я там немного поправлю и все заработает. Но я даже полностью прочитать этот скрипт не могу.
Помогите пожалуйста прочитать его. Что сам понял подписал, что не понял подписал - ?.
Еще если подскажите что почитать конкретно про парсинг буду очень признателен.
Заранее очень благодарю за помощь.
Dimmi
не нашел как приатачить файл. вот скрипт.

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()
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
Dimmi
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 это некий модуль для парсинга. Подскажите пожалуйста где можно об этом прочитать так, чтобы с самого начала?
В Вашем коде мало что понял, поясните пожалуйста.
Дмитрий.
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