Вопрос-Ответ

How can I read large text files line by line, without loading them into memory? [duplicate]

Как я могу читать большие текстовые файлы построчно, не загружая их в память?

Я хочу прочитать большой файл (> 5 ГБ), построчно, не загружая все его содержимое в память. Я не могу использовать readlines(), поскольку это создает очень большой список в памяти.

Переведено автоматически
Ответ 1

Используйте for цикл для файлового объекта, чтобы читать его построчно. Используйте with open(...), чтобы позволить менеджеру контекста убедиться, что файл закрыт после чтения.:

with open("log.txt") as infile:
for line in infile:
print(line)
Ответ 2

Все, что вам нужно сделать, это использовать объект file в качестве итератора.

for line in open("log.txt"):
do_something_with(line)

Еще лучше использовать context manager в последних версиях Python.

with open("log.txt") as fileobject:
for line in fileobject:
do_something_with(line)

Это также автоматически закроет файл.

Ответ 3

Пожалуйста, попробуйте это:

with open('filename','r',buffering=100000) as f:
for line in f:
print line
Ответ 4

Вместо этого вам лучше использовать итератор.
Уместно: fileinput — Выполнять итерации по строкам из нескольких входных потоков.

Из документации:

import fileinput
for line in fileinput.input("filename", encoding="utf-8"):
process(line)

Это позволит избежать копирования всего файла в память сразу.

python