def reverse_lines(filename, BUFSIZE=4096):
    f = open(filename, 'rb')
f.seek(0, 2)
p = f.tell()
remainder = ''
while True:
    sz = min(BUFSIZE, p)
p -= sz
f.seek(p)
buf = f.read(sz) + remainder
if '\n' not in buf:
    remainder = buf
else:
    i = buf.index('\n')
for L in buf[i + 1:].split('\n')[::-1]:
    yield L
remainder = buf[:i]
if p == 0:
    break
yield remainder
Как прочитать файл в обратном порядке в python3.2, не читая весь файл в память?