Error de memoria debido al gran tamaño del archivo de entrada

Cuando uso el siguiente código para leer el archivo:

lines=file("data.txt").read().split("\n") 

Tengo el siguiente error

 MemoryError 

el tamaño del archivo es

 ls -l -rw-r--r-- 1 charlie charlie 1258467201 Sep 26 12:57 data.txt 

Obviamente, el archivo es demasiado grande para leerlo en la memoria de una vez.

¿Por qué no solo usar:

 with open("data.txt") as myfile: for line in myfile: do_something(line.rstrip("\n")) 

o, si no estás en Python 2.6 y superior:

 myfile = open("data.txt") for line in myfile: do_something(line.rstrip("\n")) 

En ambos casos, obtendrás un iterador que puede ser tratado como una lista de cadenas.

EDITAR: Debido a que su forma de leer el archivo completo en una cadena grande y luego dividirlo en nuevas líneas eliminará las nuevas líneas en el proceso, he agregado un .rstrip("\n") a mis ejemplos para simular mejor el resultado .

Use este código para leer el archivo línea por línea:

 for line in open('data.txt'): # work with line