Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка лога 
:(
    Опции темы
Stain
Дата 22.9.2005, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.9.2005

Репутация: нет
Всего: нет



Имею логи сервера, необходимо его весь прочитать и записать в БД.
Первая проблема с которой столкнулся это переполнение памяти при чтении большого файла.

Часть скрипта выглядит следующим образом:


import sys
path = "путь_к_логу\access_sqid.log"

f=open(path, 'r')
while 1:
line = f.readline()
if not lines: break
print line
sys.stdout.flush()
f.close()


Хватит ли в этом "скрипте" sys.stdout.flush() что-бы переполнения не происходило?


Заранее благодарен за любые ответы. smile
PM MAIL   Вверх
Бонифаций
Дата 22.9.2005, 13:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 827
Регистрация: 15.9.2005
Где: Brisbane

Репутация: нет
Всего: 40



Цитата(Stain @ 22.9.2005, 11:51)
Имею логи сервера, необходимо его весь прочитать и записать в БД.
Первая проблема с которой столкнулся это переполнение памяти при чтении большого файла.

Часть скрипта выглядит следующим образом:


import sys
path = "путь_к_логу\access_sqid.log"

f=open(path, 'r')
while 1:
line = f.readline()
if not lines: break
print line
sys.stdout.flush()
f.close()


Хватит ли в этом "скрипте" sys.stdout.flush() что-бы переполнения не происходило?


Заранее благодарен за любые ответы. smile

стоп стоп стоп. так как у вас написано никакого переполнения в помине быть не может (если конечно это не бинарный файл где в 1 строку туча мегабайтов).

А вот строчка

if not lines:


учитывая, что вы считываете в line, наводит на мысль, что раньше это выглядело немного не так, а скажем

lines = f.readlines()

что совсем другой коленкор. Тогда конечно возможна нехватка памяти.





--------------------
 Бонифаций.
 
PM MAIL ICQ Skype GTalk Jabber YIM   Вверх
Stain
Дата 22.9.2005, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 5
Регистрация: 22.9.2005

Репутация: нет
Всего: нет



вот немножко подправил скрипт:


import sys
path = "путь_к_логу\access_squid.log"

try:
fopen = open(path, 'r')
try:
while 1:
line = fopen.readline()
if not line: break
sys.stdout.flush()
print ">>>",line
finally:
fopen.close()
print "\n------------ \nbue!"
except IOError:
print "File Not Found"


собсна так выглядит читалка лога (это мой первый скрипт smile ).
появилось два вопроса:
1. возможна ли нехватка памяти при таком раскладе?
2. если нет, то нужнали вообще строка sys.stdout.flush()

для информации. лог большой примерно на 10 гигов. хотелось бы написать нормальний скрипт анализа этого лога.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.