Форум сайта python.su
-1
…
Отредактировано Michail_V (Июнь 20, 2013 15:00:02)
Офлайн
17
import mmap with open("data.bin", "r+") as f: m = mmap.mmap(f.fileno(), 0) pos = m.rfind( "\n" )
Офлайн
88
Используйте file.seek и, скорее всего, бинарный режим доступа.
Офлайн
-1
…
Отредактировано Michail_V (Июнь 20, 2013 14:24:51)
Офлайн
253
Michail_VТак вы приведите свой код.
всё-равно выжирает оперативу
Офлайн
-1
…
Отредактировано Michail_V (Июнь 20, 2013 14:25:03)
Офлайн
253
Michail_VНаучите каким образом вы это так понимаете. http://docs.python.org/2/library/mmap.html
насколько я понимаю
f=open("some_file.dat","r")
Отредактировано doza_and (Июнь 19, 2013 21:05:36)
Офлайн
36
def reverse_readlines(path, BLOCK_SIZE=4096): with open(path, "rb") as f: bfr = b"" f.seek(-1, 2) while True: pos = f.tell() newline_pos = bfr.rfind(b"\n") while -1 != newline_pos: line, bfr = bfr[newline_pos+1:], bfr[:newline_pos] yield line newline_pos = bfr.rfind(b"\n") else: if pos: toread = min(BLOCK_SIZE, pos) f.seek(-toread, 1) bfr = f.read(toread) + bfr f.seek(-toread, 1) if pos == toread: bfr = b"\n" + bfr else: raise StopIteration()
Офлайн