Estoy tratando con datos de gran tamaño, por lo que es muy importante encontrar una buena forma de leer datos. Estoy un poco confundido acerca de los diferentes métodos de lectura.Diferentes formas de leer datos grandes en python
1.f=gzip.open(file,'r')
for line in f:
process line
#how can I process nth line? can I?
2.f=gzip.open(file,'r').readlines()
#f is a list
f[10000]
#we can process nth line
3.f=gzip.open(file,'r')
while True:
linelist=list(islice(f,4))
4.for line in fileinput.input():
process line
¿Cuál es la diferencia entre 2 y 3? Solo encuentro que su uso de memoria es el mismo. islice() también necesita cargar primero todo el archivo en la memoria (pero más adelante tomarlo poco a poco). Y oigo que el 4to método consume menos memoria, en realidad se procesa poco a poco, ¿verdad? Para archivos de escala de 10GB, ¿qué método de lectura de archivos recomendaría? Cualquier pensamiento/información es bienvenida. thx
editar: Creo que uno de mi problema es que necesito seleccionar líneas específicas al azar algunas veces. dicen:
f1=open(inputfile1, 'r')
while True:
line_group1 = list(islice(f1, 3))
if not line_group1:
break
#then process specific lines say, the second line.
processed 2nd line
if (....):
LIST1.append(line_group1[0])
LIST1.append(processed 2nd line)
LIST1.append(line_group1[2])
Y entonces algo. como
with open(file,'r') as f,
for line in f:
# process line
puede que no funcione, ¿estoy en lo correcto?
así que ¿es necesario tener acceso aleatorio a un archivo de texto grande? –
Bueno, en realidad no necesariamente. Básicamente aún procesa línea por línea; o N líneas como un grupo. – user815408