Форум сайта python.su
В гугле меня похоже забанили, ничего кроме “нужна 64” не нашел.
сделал так, вроде работает:
def fead_for_re(fl, bufsize, over): last =0 while 1: if fl.tell() and not last: fl.seek(-over, 1) data = fl.read(bufsize + over) if len(data) < bufsize + over: last = 1 if not data: break yield data
with open(os.path.join(path, pt),'rb') as f: for chunk in fead_for_re(f, 1024 * 1024, 1024): res = proc.findall(chunk) for r in res: ...
Офлайн
Что пытаешься сделать? Опиши задачу.
Офлайн
py.user.next
Так то и пытаюсь, в файлах, размером в несколько ГБ найти чтото регекспом.
Пардон, не написал что
proc = re.compile
Офлайн
Iskatel
Может стоить grep заюзать да и не выдумывать?
Офлайн
FishHook
Это часть проги, странно бы было ее разбиваь на куски с заюзыванием некоторых прог, которых в стандартной поставке даже нет…
Офлайн
Iskatel
не менее странно вкорячивать в программу какие-то наколенные изыскания, когда в любой современной ОС есть встроенные средства поиска оптимизированные до неприличия. Ваша программа, она же не в информационном вакууме будет запускаться, а в некотором окружении. В этом окружении уже давно всё решено и вы лучше не решите точно, даже приблизительно так не решите.
Офлайн
FishHook
Есть преложения для винды?
Ну кроме того что “на линуксах пробовал, на макоси не пробовал, а винду хз”
Офлайн
Вообще есть возможность устанавливать GNU программы в Винде. CygWin, MinGW или еще вот GnuWin32. Где то на форуме кто то уже упоминал о подобных рабочих связках
Офлайн
IskatelДа это понятно из наличия метода .findall().
Пардон, не написал что
IskatelТак и надо делать, какого бы размера он ни был. Загружать всё в память - последнее дело, потому что сегодня там маленький файл, а завтра большой окажется. А программа должна быть применима к файлам любого размера, в идеале - к бесконечным (так обычно и делают программы вроде той же grep или sed).
Так как файл такого размера невозможно считать, или смапить на 32 системе, то читаю кусками и в них ищу.
IskatelЯ такое делал - поиск по регекспу в больших данных. Это в программе для перевода любого сайта в базу данных на диске (сайт с резюме, например, в базу данных, где вся инфа по каждому человеку); неплохо вышло, сейчас всех пацанов айтишников в городе знаю в лицо и все их истории работы.
А т.к. искомое может находится на стыке кусков, то читаю чуть больше,с запасом, а потом читаю снова, сместясь на этот “запас” назад.
[guest@localhost site_18-Feb-2015]$ sqlite3 test.sqlite -line 'select * from ccpview where prof like "%програ%" limit 1'
prof = Оператор ПК, программист, системный администратор
id = 37884
created = 19.01.2015
updated = 16.02.2015
views = 61
age = 30 лет
gender = мужской
family = холост
exper = не указан
salary = от 26000 р.
worktime = не указан
edugrade = высшее
city = Южно-Сахалинск
eduname = 2010-2013 - закончил Закарпатский государственный университет. Программная инженерия.
Форма обучения: заочно.
workprev = 2005-2013 - Полиграфия ТОВ "Спектраль", монтажист-копировщик.
2013-2014 - "Интерфил", рабочий на складе.
2014 - настоящее время - Типография "Капитал", помощник печатника.
qualities = Знание пользование ПК: выше среднего.
Имеются знания в сфере полиграфии.
Занимаюсь самообучением: html, css, тестирование ПО, английский.
Личные качества: спокойный, пунктуальный, порядочный, целеустремлённый.
id:1 = 37884
name = фамилия Алексей Сергеевич
phone = +798418цифры
email = alexимя@gmail.com
id:2 = 37884
number = 0
[guest@localhost site_18-Feb-2015]$ sqlite3 test.sqlite -line 'select count(*) from ccpview where prof like "%програ%"'
count(*) = 72
[guest@localhost site_18-Feb-2015]$ sqlite3 test.sqlite -line 'select count(*) from ccpview'
count(*) = 17239
[guest@localhost site_18-Feb-2015]$
[guest@localhost site_18-Feb-2015]$ ll test.sqlite
-rw-r--r--. 1 guest guest 29156352 апр 26 2015 test.sqlite
[guest@localhost site_18-Feb-2015]$
Отредактировано py.user.next (Дек. 18, 2016 12:59:44)
Офлайн
Офлайн