Estoy analizando un archivo de 20Gb y enviando líneas que cumplen una condición determinada a otro archivo, sin embargo ocasionalmente python leerá en 2 líneas a la vez y concatenará ellos.Analizando un archivo de texto grande (20GB) con python - leyendo en 2 líneas como 1
inputFileHandle = open(inputFileName, 'r')
row = 0
for line in inputFileHandle:
row = row + 1
if line_meets_condition:
outputFileHandle.write(line)
else:
lstIgnoredRows.append(row)
He comprobado las terminaciones de línea en el archivo de origen y se comprueban como alimentaciones de línea (ascii char 10). Sacar las filas del problema y analizarlas en forma aislada funciona como se esperaba. ¿Estoy golpeando alguna limitación python aquí? La posición en el archivo de la primera anomalía está alrededor de la marca de 4 GB.
¿La primera anomalía siempre ocurre de manera consistente en el mismo recuento de líneas? Además, es 'lstIgnoredRows' una lista, ¿qué tan grande crece? Me pregunto qué pasaría si acaba de guardar las líneas que le interesan en el archivo de salida y no hizo nada con las líneas que quería ignorar. – Levon
Tal vez podrías intentar leer trozos más pequeños del archivo a la vez usando un método lento, similar a esta pregunta? Pruébalo http://stackoverflow.com/questions/519633/lazy-method-for-reading-big-file-in-python – prrao
Sucede en el mismo recuento de líneas cada vez. lstIgnoredRows puede crecer a unos pocos miles de elementos. – James