2021-12-06

Trabajar con archivos grandes

 A veces toca trabajar con archivos frandes de más e 1GB y comienzan a salir errores de memoria.


Lo primero es dividirlo en trozos más pequeños:


split -b 300000k se.txt file-


Con este comando de linux dividimos en partes de 300Mb mas o menos que ya es un tamaño más manejable.


Luego coges tu fichero de python

import time
start = time.time()

file1=open("C:\\proyectos\\bak\\ps2\\se-aa.txt","r")
file2=open("C:\\proyectos\\bak\\ps2\\se1.txt","w")
data1 = set(file1.read().splitlines())
for list in data1:
try:
x = list.index(".se.")
y=x+3
z=list[0:y]
file2.write(z)
file2.write('\n')
except ValueError:
print ("error")

file1.close()
file2.close()

end = time.time()
print(end - start)

Coges el fichero de 300 megas lo metes en un set para que quede en memoria y el proceso sea más rápido. Después vas línea a línea y buscas un patrón. en este caso '.se.' 

Quiero que cuando se encuentre se coja toda la línea hasta .se y entonces lo guarde en un fichero.


Mi equipo estaba algo saturado y tardaba 8 segundos en leer los 300Mb .


Debo comprar mas RAM y así podré trabajar bien con archivos de pocas gigas.