Introducción
Como se ha visto anteriormente, Python incorpora una serie de funciones para abrir, leer, escribir y cerrar archivos. Estas funciones se pueden aplicar a cualquier tipo de archivo, aunque en esta guía se darán indicaciones para trabajar concretamente con archivos de texto plano.
Gestión Básica de Errores
La gestión de errores es una parte crucial de cualquier programa. En Python, los errores se gestionan utilizando bloques try/except.
Si se intenta abrir un archivo que no existe, Python lanzará un error FileNotFoundError
. Este error puede ser capturado y gestionado usando un bloque try/except, para que la ejecución del programa no finalice abruptamente. Por ejemplo:
# Ejemplo de gestión de errores
try:
with open(“archivo_inexistente.txt”, “r”) as archivo:
print(archivo.read())
except FileNotFoundError:
print(“El archivo no fue encontrado.”)
En este caso, si el archivo no se encuentra, se mostrará el mensaje «El archivo no fue encontrado.» por pantalla, en lugar de terminar el programa con un error y continuando la ejecución del programa en caso de que hubiera más sentencias a continuación del bloque.
Búsqueda de una cadena de texto en el contenido de un archivo
Una tarea común al procesar archivos es buscar una cadena de texto específica dentro del contenido del archivo. A continuación, se presenta un ejemplo de cómo hacer esto, incluyendo el manejo de posibles errores que puedan surgir:
# Ejemplo de búsqueda de texto en un archivo
nombre_archivo = “archivo.txt”
cadena_busqueda = “texto a buscar”
try:
with open(nombre_archivo, “r”) as archivo:
contenido = archivo.read()
if cadena_busqueda in contenido:
print(“La cadena de búsqueda fue encontrada en el archivo.”)
else:
print(“La cadena de búsqueda no fue encontrada en el archivo.”)
except FileNotFoundError:
print(f”El archivo {nombre_archivo} no fue encontrado.”)
En este código, se abre el archivo indicado por la variable nombre_archivo
, se lee su contenido y, posteriormente, se comprueba si la cadena de búsqueda está en el contenido del archivo utilizando el operador in
. Si la cadena de búsqueda está en el archivo, se imprime un mensaje indicándolo. Si no está, se imprime un mensaje diferente. Si el archivo no se encuentra, se imprime un mensaje de error.
Este ejemplo funciona correctamente para archivos que tengan poco contenido. En caso de que tengamos archivos con una enorme cantidad de contenido (del orden de gigabytes), esta técnica probablemente no funcionará, ya que el programa no podrá cargar el archivo al completo en la memoria del sistema para poder hacer la búsqueda.
Para resolver esto, una posible solución sería leer el contenido del archivo línea a línea, de tal forma que solo se cargue en memoria, como mucho, una línea del archivo a la vez. Por ejemplo:
# Ejemplo de búsqueda de texto en un archivo (versión mejorada)
nombre_archivo = “archivo.txt”
cadena_busqueda = “texto a buscar”
try:
with open(nombre_archivo, “r”) as archivo:
linea = archivo.readline()
while linea:
if cadena_busqueda in linea:
print(“La cadena de búsqueda fue encontrada en el archivo.”)break
linea = archivo.readline()
else:
print(“La cadena de búsqueda no fue encontrada en el archivo.”)
except FileNotFoundError:
print(f”El archivo {nombre_archivo} no fue encontrado.”)
En este caso, se abre el archivo y se lee línea a línea. Si la cadena de búsqueda está en alguna línea del archivo, se imprime un mensaje indicándolo y se interrumpe el ciclo, de tal forma que no haya que seguir procesando el archivo. Si no está, y se han leído todas las líneas, se imprime un mensaje diferente. Si el archivo no se encuentra, se imprime un mensaje de error.
Como se ha comentado, esta versión del código puede ser más eficiente en términos de memoria cuando se trabaja con archivos muy grandes, ya que solo mantiene una línea del archivo en memoria a la vez, en lugar del contenido completo del archivo.
Conclusión
El procesamiento de archivos puede ser utilizado para una amplia variedad de tareas, desde el análisis de datos hasta la automatización de tareas. Previamente, se han introducido técnicas para abrir y leer archivos, manejar errores, y buscar cadenas de texto en el contenido de un archivo.
Saber más
Para saber más sobre la gestión de errores en Python, puedes consultar la documentación oficial en castellano: e.digitall.org.es/excepciones