| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Python: Общие вопросы > обработка лога |
| Автор: 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() что-бы переполнения не происходило? Заранее благодарен за любые ответы. |
| Автор: Бонифаций 22.9.2005, 13:19 | ||
стоп стоп стоп. так как у вас написано никакого переполнения в помине быть не может (если конечно это не бинарный файл где в 1 строку туча мегабайтов). А вот строчка if not lines: учитывая, что вы считываете в line, наводит на мысль, что раньше это выглядело немного не так, а скажем lines = f.readlines() что совсем другой коленкор. Тогда конечно возможна нехватка памяти. |
| Автор: Stain 22.9.2005, 14:56 |
| вот немножко подправил скрипт: 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" собсна так выглядит читалка лога (это мой первый скрипт появилось два вопроса: 1. возможна ли нехватка памяти при таком раскладе? 2. если нет, то нужнали вообще строка sys.stdout.flush() для информации. лог большой примерно на 10 гигов. хотелось бы написать нормальний скрипт анализа этого лога. |