2.1 Lectura completa del archivo
En Python hay varias maneras de leer archivos de texto. Cada uno de estos métodos tiene sus ventajas y es adecuado para diferentes situaciones. Las formas principales de leer archivos de texto son: lectura de todo el contenido, lectura línea por línea, lectura especificando el número de caracteres, entre otros.
El método read()
lee todo el contenido del archivo en una sola cadena.
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
Es una forma muy sencilla de leer un archivo: una llamada al método y todo el contenido del archivo está en tu cadena. Este enfoque tiene desventajas: si el archivo contiene, por ejemplo, 200 MB de logs, la lectura será lenta y la memoria de tu aplicación se consumirá rápidamente.
2.2 Lectura de todas las líneas del archivo
Hay una alternativa al método read()
: es el método readlines()
. También lee todo el archivo en memoria, pero lo devuelve no como una sola gran cadena, sino como una lista de cadenas: cada línea del archivo será una cadena separada en la lista.
El método readlines()
lee todas las líneas del archivo y las devuelve como una lista de cadenas.
file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
print(line.strip()) # strip() elimina espacios extra y caracteres de nueva línea
file.close()
Este enfoque puede ser conveniente si ya sabes que necesitas procesar el contenido del archivo línea por línea. Las desventajas son que este método puede consumir mucha memoria para archivos muy grandes, ya que todas las líneas se cargan en la memoria.
2.3 Iteración sobre las líneas del archivo
El objeto file
tiene un iterador incorporado, por lo que puedes recorrer su contenido con un bucle for
. Esto permite leer el archivo línea por línea sin cargar todo el archivo en memoria.
Ejemplo:
file = open('example.txt', 'r')
for line in file:
print(line.strip())
file.close()
Este método es más eficiente en términos de memoria para archivos grandes, ya que las líneas se leen una por una. Sin embargo, puede ser más complicado de manejar si necesitas regresar a una línea anterior o cambiar el orden de lectura.
Vamos a comparar nuevamente este enfoque y el anterior:
Uso del iterador | Uso de la función readlines() |
---|---|
|
|
Es más simple y rápido. Sin embargo, cuando trabajes en proyectos reales, a veces será más rápido cargar todos los datos en memoria de una vez y trabajar con ellos allí.
Los métodos readline()
y readlines()
se utilizan para leer líneas de un archivo, pero funcionan de manera diferente. readline()
lee una línea a la vez, lo que permite controlar el proceso de lectura y no cargar todo el archivo en memoria. Esto es útil cuando necesitas procesar un archivo línea por línea o cuando el archivo es demasiado grande para cargarlo completamente en memoria.
readlines()
, en cambio, lee todas las líneas del archivo de una vez y las devuelve como una lista. Este método es conveniente si necesitas obtener rápidamente todas las líneas del archivo para su procesamiento posterior. Sin embargo, consume más memoria, especialmente para archivos grandes, ya que todo el archivo se carga en memoria.
Dependiendo de la tarea, readline()
puede ser preferible si es importante ahorrar memoria y tener control sobre el proceso de lectura, mientras que readlines()
es conveniente cuando necesitas obtener todas las líneas del archivo de inmediato para su procesamiento.
2.4 Lectura de parte del archivo
Si el archivo es demasiado grande, puedes leerlo por partes. Al método read(n)
se le puede pasar el parámetro n
, que es la cantidad de caracteres que deseas leer. Si en el archivo hay menos caracteres que n
, el método read()
simplemente leerá el archivo hasta el final.
Ejemplo:
file = open('example.txt', 'r')
content = file.read(10) # Lee los primeros 10 caracteres
print(content)
file.close()
Esto es conveniente para leer archivos grandes por partes o para procesar bloques de datos fijos. Pero este enfoque ignora la división del archivo por líneas: las líneas pueden romperse a la mitad.
2.5 Lectura del archivo línea por línea
Si por alguna razón no quieres usar el iterador, puedes leer el archivo línea por línea manualmente. Para esto, el objeto file
tiene el método readline()
. No confundir con readlines()
.
El método readline()
lee una línea del archivo a la vez.
Ejemplo:
file = open('example.txt', 'r')
line = file.readline()
while line:
print(line.strip())
line = file.readline()
file.close()
En este ejemplo leemos el contenido del archivo línea por línea, hasta que la línea leída esté vacía.
GO TO FULL VERSION