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