Cómo leer líneas específicas de un archivo en Python

Heys 30 enero 2023
  1. fileobject.readlines() para leer líneas específicas de un archivo de tamaño pequeño
  2. for bucle en fileobject para leer líneas específicas en Python
  3. Módulo linecache para leer las líneas específicas en Python
  4. enumerate durante la lectura de líneas específicas de un gran archivo en Python
Cómo leer líneas específicas de un 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.

Artículo relacionado - Python File