2014-09-14 5 views
0

Я пытаюсь запустить анализ Acora на файл, который работает как ожидалось в текстовых файлах. Когда я пытаюсь запустить его на gzipped-файлах с помощью модуля gzip python (который должен допускать прозрачное чтение сжатых файлов), я ничего не получаю взамен. Это не случай не перематывания файла в начале, я попробовал его из свежих как сжатыми, так и несжатыми.Acora не работает с gzip-открытыми файлами

from acora import AcoraBuilder 

f1 = open('input_file.txt', 'r') 
ac = AcoraBuilder(tokens).build() 
ac.filefindall(f1) ## Works as expected 

import gzip 
f2 = gzip.open('input_file.txt.gz', 'r') 
ac = AcoraBuilder(tokens).build() 
ac.filefindall(f2) ## Doesn't work, returns no results 

Пожалуйста, дайте мне знать, если этого не хватает.

ответ

0

Я думаю, что Acora не поддерживает сжатые файлы. Вам нужно извлечь его перед использованием.

from acora import AcoraBuilder 
import gzip 

with gzip.GzipFile('input_file.txt.gz', 'rb') as fp: 
    f2 = fp.read() 

ac = AcoraBuilder(tokens).build() 
ac.findall(f2) 

В любом случае acora имеет встроенную поддержку для поиска в файлах.

keywords = ['Import', 'FAQ', 'Acora', 'NotHere'.upper()] 

builder = AcoraBuilder([s.encode('ascii') for s in keywords]) 
ac = builder.build() 

found = set(kw for kw, pos in ac.filefind('README.rst')) 
+0

Как я понимаю, Acora делает файлы, делая chunked чтения с использованием f.read(), который gzip должен обрабатывать прозрачно. Но это не так. Я специально стараюсь не распаковывать его и загружать весь файл в память. – user1765949

Смежные вопросы