Найти - Пользователи
Полная версия: Парсинг конфигурационного файла. regexp или другое
Начало » Python для новичков » Парсинг конфигурационного файла. regexp или другое
1 2 3 4 5 6
aivs
Хотел подробное описание регэкспа, не знаю что такое %s. А ладно сам разберусь!
Ed
%s - это не регексп, это старый не модный string formatting: http://docs.python.org/release/2.5/lib/typesseq-strings.html
модный здесь: http://docs.python.org/library/string.html#format-string-syntax
aivs
Спасибо, учу re!
методы строк работают быстрее, чем re
Ed
Если хотите быстрее, то читайте построчно и в каждой строке меняйте то, что нужно. Только не readlines, пожалуйста.
aivs
Как читать построчно, если не readlines? написать свою функцию, которая по \n будет определять где конец строки? Когда С изучал, там предлагался именно такой метод.

Я обдумывал такой вариант парсинга конфига, без использования re:
1) Прочитать все строки с помощью readlines
2) каждую строку преврать в list из слов с помощью split
3) Сравнить первое слова с шаблоном
4) если первое слово совпадает с шаблоном, то работать уже с этой строкой
5) после изменения, собрать обратно list в строку c помощью join
6) записать в файл

Думаю, что операции split/join по времени будут выполняться так же как и конструкция для re.

Прощу прощения за демогогию, если это не разумно, и для такой простой задачи лучше использовать re, то я закончу эту дискуссию!
Ed
readlines читает весь файл. Конечно для вашего случая это неважно, но и не нужно. Если же файл большой, то это уже ненужный расход памяти.
Вам по идее достаточно прочитать строку, заменить в ней чего надо если надо и записать ее в выходной файл.
В конце процесса переименовать выходной файл во входной.

Читать по строкам так:
for line in open(filename):
print line
aivs
Спасибо, попробую
Ed
Если есть желание - давайте результат сюда, посмотрим, подправим.
aivs
Результат конечно напишу!
for line in open(filename) это не тоже самое что и readline? Построчное чтение, гораздо медленее чем readlines.
Ed
может быть и медленнее. Напишите оба варианта и попрофилируем. Если вам так важно быстродействие, то выберете самый быстрый. Хотя для админских задач быстродействие на мой взгляд некритично. Впрочем если вы будете апдейтить десятки тысяч конфигов таким образом, то да.
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