logo

Leer un archivo línea por línea en Python

Requisitos previos:

Python proporciona funciones integradas para crear, escribir y leer archivos. Hay dos tipos de archivos que se pueden manejar en Python, archivos de texto normales y archivos binarios (escritos en lenguaje binario, 0 y 1). En este artículo, vamos a estudiar la lectura línea por línea de un archivo.



Método 1: leer un archivo línea por línea usando readlines()

readlines() se usa para leer todas las líneas de una sola vez y luego devolverlas como cada línea como 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 eliminar el carácter de nueva línea ' ' usando la función strip().

Ejemplo:

si no si no java

Python3








# Python code to> # demonstrate readlines()> L>=> [>'Geeks '>,>'for '>,>'Geeks '>]> # writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Using readlines()> file1>=> open>(>'myfile.txt'>,>'r'>)> Lines>=> file1.readlines()> count>=> 0> # Strips the newline character> for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))>

>

>

Producción:

Line1: Geeks Line2: for Line3: Geeks>

La complejidad temporal del código Python dado es O(n), donde n es el número total de líneas en el archivo.

La complejidad del espacio auxiliar del código es O (n), donde n es el número total de líneas del archivo.

Método 2: leer un archivo línea por línea usando readline()

La función readline() lee una línea del archivo 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 recuperar todos los datos de una sola vez, los recupera 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:

ENFOQUE PASO A PASO:

tabla desc en mysql
  1. Cree una lista L con tres elementos de cadena que contengan caracteres de nueva línea.
  2. Abra un archivo llamado myfile.txt en modo de escritura y asígnelo a la variable file1.
  3. Escriba el contenido de la lista L en el archivo usando el método writelines() del objeto de archivo file1.
  4. Cierre el archivo objeto file1 usando el método close().
  5. Abra el archivo llamado myfile.txt en modo lectura y asígnelo a la variable file1.
  6. Inicialice un recuento de variables a 0.
  7. Inicia un bucle infinito.
  8. Incremente el recuento de variables en 1 en cada iteración del ciclo.
  9. Lea la siguiente línea del objeto de archivo file1 usando el método readline() y asígnela a la línea variable.
  10. Compruebe si la variable de línea está vacía. Si está vacío significa que se ha llegado al final del archivo. En ese caso, salga del bucle utilizando la declaración break.
  11. Imprima el valor del recuento y el contenido de la línea utilizando el método format() de la clase de cadena. El método strip() se utiliza para eliminar el carácter de nueva línea al final de la línea.
  12. Cierre el archivo objeto file1 usando el método close().

Python3




# Python program to> # demonstrate readline()> L>=> [>'Geeks '>,>'for '>,>'Geeks '>]> # Writing to a file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines((L))> file1.close()> # Using readline()> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> while> True>:> >count>+>=> 1> ># Get next line from file> >line>=> file1.readline()> ># if line is empty> ># end of file is reached> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> file1.close()>

>

>

Producción:

Line1 Geeks Line2 for Line3 Geeks>

Método 3: leer un archivo línea por línea usando el bucle for

La función open() devuelve un objeto iterable al abrir un archivo. Esta última forma de leer un archivo línea por línea incluye iterar sobre un objeto de archivo en un bucle. Al hacer esto, aprovechamos una función incorporada de Python que nos permite iterar sobre el objeto de archivo implícitamente usando un bucle for en combinación con el uso del objeto iterable. Este enfoque requiere menos líneas de código, lo que siempre es la mejor práctica que vale la pena seguir.

Ejemplo:

Python3




# Python program to> # demonstrate reading files> # using for loop> L>=> [>'Geeks '>,>'for '>,>'Geeks '>]> # Writing to file> file1>=> open>(>'myfile.txt'>,>'w'>)> file1.writelines(L)> file1.close()> # Opening file> file1>=> open>(>'myfile.txt'>,>'r'>)> count>=> 0> # Using for loop> print>(>'Using for loop'>)> for> line>in> file1:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Closing files> file1.close()>

>

>

Producción:

Using for loop Line1: Geeks Line2: for Line3: Geeks>

Método 4: leer un archivo línea por línea usando el bucle for y la comprensión de listas

Una lista por comprensión consta de corchetes que contienen la expresión, que se ejecuta para cada elemento junto con el bucle for para iterar sobre cada elemento. Aquí, leeremos el archivo de texto e imprimiremos los datos sin procesar, incluido el carácter de nueva línea, en otra salida eliminamos todos los caracteres de nueva línea de la lista.

Ejemplo

rudyard kipling si explicación

Python3




with>open>(>'myfile.txt'>) as f:> >lines>=> [line>for> line>in> f]> print>(lines)> # removing the new line characters> with>open>(>'myfile.txt'>) as f:> >lines>=> [line.rstrip()>for> line>in> f]> print>(lines)>

montón y clasificación de montón

>

>

Producción:

['Geeks
', 'For
', 'Geeks'] ['Geeks', 'For', 'Geeks']>

Con declaración

En los enfoques anteriores, cada vez que se abre el archivo es necesario cerrarlo explícitamente. Si uno olvida 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 una declaración. La declaración With en Python se utiliza en el manejo de excepciones para hacer que el código sea más limpio y mucho más legible. Simplifica la gestión de recursos comunes como flujos de archivos. Observe el siguiente ejemplo de código sobre cómo el uso de la instrucción with hace que el código sea más limpio. No es necesario llamar a file.close() cuando se usa con la declaración. La propia declaración garantiza la adecuada adquisición y liberación de recursos.

Ejemplo:

Python3




# Python program to> # demonstrate with> # statement> L>=> [>'Geeks '>,>'for '>,>'Geeks '>]> # Writing to file> with>open>(>'myfile.txt'>,>'w'>) as fp:> >fp.writelines(L)> # using readlines()> count>=> 0> print>(>'Using readlines()'>)> with>open>(>'myfile.txt'>) as fp:> >Lines>=> fp.readlines()> >for> line>in> Lines:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using readline()> count>=> 0> print>(>' Using readline()'>)> with>open>(>'myfile.txt'>) as fp:> >while> True>:> >count>+>=> 1> >line>=> fp.readline()> >if> not> line:> >break> >print>(>'Line{}: {}'>.>format>(count, line.strip()))> # Using for loop> count>=> 0> print>(>' Using for loop'>)> with>open>(>'myfile.txt'>) as fp:> >for> line>in> fp:> >count>+>=> 1> >print>(>'Line{}: {}'>.>format>(count, line.strip()))>

>

>

Producción:

Using readlines() Line1: Geeks Line2: for Line3: Geeks Using readline() Line1: Geeks Line2: for Line3: Geeks Using for loop Line1: Geeks Line2: for Line3: Geeks>