Articles

GeeksforGeeks

Requisitos previos:

  • Modos de acceso
  • Abrir un archivo
  • Cerrar un archivo
  • Python proporciona funciones incorporadas para crear, escribir y leer archivos. Hay dos tipos de archivos que se pueden manejar en python, los archivos de texto normal y los archivos binarios (escritos en lenguaje binario, 0s y 1s). En este artículo, vamos a estudiar la lectura línea por línea de un archivo.

    Lectura línea por línea

    Usando readlines()

    readlines() se utiliza para leer todas las líneas de una sola vez y luego devolverlas como cada línea un elemento de cadena en una lista. Esta función se puede utilizar para archivos pequeños, ya que lee todo el contenido del archivo en la memoria y luego lo divide en líneas separadas. Podemos iterar sobre la lista y quitar el carácter de nueva línea ‘\n’ usando la función strip().

    Ejemplo:

    Python3

    L =

    file1 =open('myfile.txt', 'w')

    file1.writelines(L)file1.close()

    file1 =open('myfile.txt', 'r')
    Lines

    =file1.readlines()

    count =0

    for

    line inLines:

    count +=1

    print("Line{}: {}".format(count, line.strip()))

    
    
    
    

    Salida:

    Line1: GeeksLine2: forLine3: Geeks

    Usando readline()

    La función readline() lee una línea del fichero y la devuelve en forma de cadena. Toma un parámetro n, que especifica el número máximo de bytes que se leerán. Sin embargo, no lee más de una línea, incluso si n excede la longitud de la línea. Será eficiente al leer un archivo grande porque en lugar de obtener todos los datos de una sola vez, obtiene línea por línea. readline() devuelve la siguiente línea del archivo que contiene un carácter de nueva línea al final. Además, si se llega al final del archivo, devolverá una cadena vacía.

    Ejemplo:

    Python3

    L =

    file1 =open('myfile.txt', 'w')

    file1.writelines((L))

    file1.close()

    file1 =open('myfile.txt', 'r')

    count =0

    whileTrue:

    count +=1

    line =file1.readline()

    ifnotline:

    break

    print("Line{}: {}".format(count, line.strip()))
    file1.close()

    
    
    
    

    Salida:

    Line1 GeeksLine2 forLine3 Geeks

    Usando el bucle for

    Un objeto iterable es devuelto por la función open() al abrir un fichero. Esta última forma de leer en un archivo línea por línea incluye iterar sobre un objeto archivo en un bucle for. Al hacer esto estamos aprovechando una función incorporada en Python que nos permite iterar sobre el objeto archivo implícitamente usando un bucle for en una combinación con el uso del objeto iterable. Esta aproximación ocupa menos líneas de código, que es siempre la mejor práctica que merece la pena seguir.

    Ejemplo:

    Python3

    L =

    file1 =open('myfile.txt', 'w')
    file1.writelines(L)
    file1.close()
    file1 =open('myfile.txt', 'r')

    count =0

    print("Using for loop")

    forline infile1:

    count +=1

    print("Line{}: {}".format(count, line.strip()))
    file1.close()

    
    
    
    

    Salida:

    Using for loopLine1: GeeksLine2: forLine3: Geeks

    Con declaración

    En los planteamientos anteriores, cada vez que se abre el archivo es necesario cerrarlo explícitamente. Si uno se olvida de cerrar el archivo, puede introducir varios errores en el código, es decir, muchos cambios en los archivos no entran en vigor hasta que el archivo se cierra correctamente. Para evitar esto se puede utilizar la sentencia With. La sentencia With en Python se utiliza en el manejo de excepciones para hacer el código más limpio y mucho más legible. Simplifica la gestión de recursos comunes como los flujos de archivos. Observe el siguiente ejemplo de código sobre cómo el uso de la sentencia with hace que el código sea más limpio. No hay necesidad de llamar a file.close() cuando se utiliza la sentencia with. La propia sentencia with asegura la correcta adquisición y liberación de recursos.

    Ejemplo:

    Python3

    L =
    with open("myfile.txt", "w") as fp:

    fp.writelines(L)

    count =0

    print("Using readlines()")

    with open("myfile.txt") as fp:

    Lines =fp.readlines()

    forline inLines:
    count +=1

    print("Line{}: {}".format(count, line.strip()))

    count =0
    print("\nUsing readline()")

    with open("myfile.txt") as fp:

    whileTrue:

    count +=1

    line =fp.readline()

    ifnotline:

    break

    print("Line{}: {}".format(count, line.strip()))

    count =0
    print("\nUsing for loop")

    with open("myfile.txt") as fp:

    forline infp:

    count +=1

    print("Line{}: {}".format(count, line.strip()))

    
    
    
    

    Salida:

    Using readlines()Line1: GeeksLine2: forLine3: GeeksUsing readline()Line1: GeeksLine2: forLine3: GeeksUsing for loopLine1: GeeksLine2: forLine3: Geeks

Dejar una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *