Мне нужно прочитать большой файл по строкам. Предположим, что файл имеет более 5 ГБ, и мне нужно прочитать каждую строку, но, очевидно, я не хочу использовать readlines()
, потому что он создаст очень большой список в памяти.
Как будет работать код ниже для этого случая? Является ли xreadlines
само чтение по одному в память? Требуется ли выражение генератора?
f = (line for line in open("log.txt").xreadlines()) # how much is loaded in memory?
f.next()
Плюс, что я могу сделать, чтобы прочитать это в обратном порядке, так же как команда Linux tail
?
Я нашел:
http://code.google.com/p/pytailer/
и
"python head, tail и backward читается строками текстового файла"
Оба работали очень хорошо!