Cómo leer líneas específicas de un archivo en Python
-
fileobject.readlines()
para leer líneas específicas de un archivo de tamaño pequeño -
for
bucle enfileobject
para leer líneas específicas en Python -
Módulo
linecache
para leer las líneas específicas en Python -
enumerate
durante la lectura de líneas específicas de un gran archivo en Python
Una forma común de leer un archivo en Python es leerlo completamente y luego procesar la línea específica. La lectura de un archivo en Python es rápida, por ejemplo, toma aproximadamente 0,67 segundos escribir un archivo de 100MiB. Pero si el tamaño del archivo excede los 100 MB, causaría problemas de memoria cuando se lee en la memoria.
Python tiene 3 métodos incorporados para leer las líneas específicas de un archivo, como se introduce en las siguientes secciones.
fileobject.readlines()
para leer líneas específicas de un archivo de tamaño pequeño
fileobject.readlines()
lee todo el contenido del archivo a la memoria. Podría usar el rebanado de listas para leer las líneas específicas.
Si sólo necesitamos leer la línea 10,
with open("file.txt") as f:
data = f.readlines()[10]
print(data)
Si necesitamos leer líneas de 10 a 100,
with open("file.txt") as f:
data = f.readlines()[10:100]
print(data)
for
bucle en fileobject
para leer líneas específicas en Python
for line in fileobject
es también una solución rápida para los archivos pequeños.
lines = [10, 100]
data = []
i = 0
with open("file.txt", "r+") as f:
for line in f:
if i in lines:
data.append(line.strip)
i = i + 1
print(data)
Módulo linecache
para leer las líneas específicas en Python
linecache
para leer muchos archivos, posible repetición o extracción de muchas líneas:
import linecache
data = linecache.getline("file.txt", 10).strip()
El método de la cadena strip()
devuelve una cadena que elimina los espacios en blanco de ambos extremos.
El módulo linecache
permite obtener cualquier línea de un archivo fuente de python mientras se utiliza la caché para optimizar internamente, lo cual es una práctica común de leer muchas líneas de un solo archivo. El módulo traceback
lo usa para recuperar las líneas de origen contenidas en el traceback formateado.
enumerate
durante la lectura de líneas específicas de un gran archivo en Python
Cuando se leen archivos, uno grande puede causar problemas como que no quepa en la memoria. En este caso, podríamos usar enumerate()
:
with open("file.txt") as f:
for i, line in enumerate(f):
pass # process line i
Note que para la línea n
, i = n-1
.
La función enumerate()
se usa para combinar un objeto de datos transitable (como una lista, tupla o cadena) en una secuencia de índices, listando los datos y los subíndices de datos al mismo tiempo, que se usa generalmente en el bucle for
.