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