Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 26, 2015 16:20:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Обработка файла размером 150 Мбайт

python1991
на Линуксе выводит все правильно , а вот на Винде ничего не выводит не в файл не в консоль
Так ты даже виндовый код не привёл. То, что ты привёл, это какая-то лажа, начиная от неправильных регулярок, заканчивая повсеместными findall()'ми, которые создают списки на каждой строке.

Лучше напиши, что пытаешься сделать, приведи пример файла (обрежь его до нескольких строк) и что нужно из него получить.



Офлайн

#2 Дек. 26, 2015 16:52:32

python1991
Зарегистрирован: 2015-12-25
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка файла размером 150 Мбайт

Ребят всем спасибо за отклики и за комменты!!!
Проблему решил следущим образом
Все отставил только заменил кусок кода кто смотрел (начало)
там где идут рег выражения оставил также правда с некоторыми изменениями которые Вы посоветовали

str_str = “”
str_list =
f = open(“C:\\111\\z.txt”,“r”)
for line in f.readlines():
if len(line.strip()) <= 0:
continue
elif line.strip() != “—————————”:
str_str = str_str + line.strip()
elif line.strip() == “—————————”:
str_list.append(str_str); str_str = “”


Проблема была в том что переменная str_str не может хранить строки всего файла (150 Мбайт)

Офлайн

#3 Дек. 26, 2015 17:35:35

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Обработка файла размером 150 Мбайт

python1991
Проблема была в том что переменная str_str не может хранить строки всего файла (150 Мбайт)
Так вот у тебя строка, которая точно так же весь файл загружает в оперативную память (что не нужно делать)
python1991
for line in f.readlines():



Офлайн

#4 Дек. 26, 2015 20:01:11

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2759
Репутация: +  185  -
Профиль   Отправить e-mail  

Обработка файла размером 150 Мбайт

> Согласен попробую в понедельник использовать как было замечено “Rodegast”-ом не re.findall(), а re.compile() может поможет.

compile не заменяет findall. Т.е. у тебя должно быть что-то вроде:

rex_start_time = re.compile(r"\d{4}\s\d{2}[.]\w{3}\s\d{2}[:]\d{2}[:]\d{2}[:]")



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version