Unidad 7: Excepciones
Excepción: Es una situación en la ejecución de un programa que Python no puede manejar
Si durante la ejecución de un programa Python detecta una situación que no puede manejar,
por ejemplo un error, entonces "lanza" una excepción. Al lanzar una excepción, el programa se
detiene y Python nos muestra un mensaje
Python tiene un conjunto de excepciones estándar, siendo las más comunes:
● NameError : No se encuentra un nombre de referencia o variable
● TypeError : Se aplica una operación o función a un dato del tipo inapropiado
● ZeroDivisionError : Ocurre cuando se intenta dividir por cero
● OverflowError : Cuando un cálculo excede el límite para un tipo de dato numérico
● IndexError : Cuando se intenta acceder a una secuencia con un índice que no existe
● ValueError : Cuando una operación o función recibe un argumento inapropiado
● KeyError : Cuando se intenta acceder a un diccionario con una clave que no existe
● FileNotFoundError : Cuando se intenta acceder a un archivo que no existe
● ImportError : Cuando falla la importación de un módulo
● IndentationError : Cuando Python espera código indentado y no existe tal código
● RuntimeError : Cuando se detecta un error que no corresponde a ningún tipo definido
Bloques try – except - finally
Para evitar que un programa se detenga ante una situación de excepción, podemos escribir
nuestro propio código para "capturar" y controlar las excepciones lanzadas. Para controlar las
excepciones, por ejemplo dentro de main() o dentro de cualquier función, utilizamos esta
estructura de código
Ejemplo:
Se admite la utilización de varios except, para así poder controlar varios tipos de excepciones
● Utilizando esta técnica se consiguen programas más fuertes, que difícilmente se
detengan de manera abrupta arrojando mensajes de error propios de Python que el
usuario no entiende.
● Se dice en estos casos que el programador controló los errores por código, es decir que
programó un manejador de errores (exception handler)
La pila de llamadas (call stack) es el orden en que se ejecutan las funciones en un programa,
desde el bloque principal hasta las funciones invocadas.
● Suponiendo un programa con una función main() y dos funciones, donde desde main()
se llama a main() una función y esta llama a la otra, podemos esquematizar la cadena
de llamadas de esta forma
Si se lanza una excepción dentro de func2()
(por ejemplo división por 0), Python mostrará
la pila de llamadas en el mensaje de error,
como se ve a la derecha
Si ocurre una excepción, Python busca un manejador en el bloque actual; si no lo encuentra,
sube por la pila de llamadas hasta hallarlo o detener el programa.
● Sólo detendrá el programa si en el propio bloque de código o en niveles superiores no
encuentra ningún código except programado para el tipo de excepción que se esté
dando
Generación de excepciones:
Con el objeto de provocar intencionalmente una excepción estándar de Python, podemos incluir
en el código una instrucción raise
También, además de las excepciones estándar, podemos provocar intencionalmente
excepciones personalizadas, usando raise Exception(mensaje)
Unidad 8: Archivos.
1. Concepto de Archivo
Un archivo es una colección organizada de datos almacenados en un dispositivo de
memoria (disco duro, SSD, etc.) que persisten después de cerrar un programa.
● Estructura de los archivos: Puede ser texto, binario u otros formatos según su
propósito. La extensión del archivo (.txt, .csv, .jpg) nos da una idea de su tipo.
● Ruta (Path): La dirección completa para localizar un archivo en el sistema.
Ejemplo:
● Ruta absoluta (Windows): C:\Users\Documentos\[Link]
● Ruta relativa: .\[Link] (asume que el archivo está en el directorio actual).
2. Tipos de Archivos
Texto:
● Compuestos por caracteres legibles (ASCII, UTF-8).
● Se abren con herramientas simples como el Bloc de notas.
● Ejemplo: un archivo .txt puede contener
Binarios:
● Contienen datos en forma de bytes que no son legibles directamente.
● Ejemplo: archivos .mp3, .jpg.
● Solo las aplicaciones especializadas pueden interpretarlos correctamente.
3. Gestión de Archivos en Python
Abrir y cerrar archivos: Para interactuar con archivos en Python:
1. Abrir un archivo con la función open():
Parámetros clave:
● [Link]: Nombre o ruta del archivo.
● mode: Modo de apertura (r, w, a).
● encoding: Especifica el tipo de codificación (UTF-8 es el estándar para
caracteres).
2. Cerrar el archivo con close() para liberar recursos:
Si no se cierra, pueden surgir errores o pérdida de datos.
Modos de apertura:
Ejemplo:
4. Escritura de Archivos
Para escribir contenido:
1. Abrir el archivo en modo w o a.
2. Usar el método write(), que solo acepta cadenas (string). Ejemplo
3. Es importante agregar saltos de línea \n manualmente para estructurar el contenido.
5. Lectura de Archivos
Python ofrece varias formas de leer datos de un archivo:
1. Método read():
● Lee todo el archivo o una cantidad específica de caracteres.
● Ejemplo:
2. Método readline():
● Lee línea por línea. Ejemplo:
3. Usar for para iterar sobre líneas:
● Más conveniente porque el archivo es iterable. Ejemplo:
Puntero interno del archivo: El puntero rastrea la posición actual de lectura/escritura:
● tell(): Obtiene la posición actual.
● seek(offset, whence): Mueve el puntero:
● offset: Número de bytes a mover.
● whence: Referencia para mover el puntero (0: inicio, 1: posición actual, 2: final).
● Ejemplo:
6. Archivos de Texto Delimitados
Un archivo delimitado organiza los datos en registros y campos separados por un delimitador.
Ejemplo:
● CSV (.csv): Usa comas.
● TSV (.tsv): Usa tabulaciones (\t).
Lectura:
1. Usar split() para dividir cada línea en campos
Escritura:
1. Componer una línea usando delimitadores entre campos
7. Manejo de Excepciones
Trabajar con archivos puede generar errores. Python tiene excepciones específicas para
manejarlos:
● FileNotFoundError: Archivo inexistente.
● PermissionError: Falta de permisos.
● OSError: Error del sistema.
Ejemplo de Control de Errores:
1. Usar bloques try, except, y finally:
Módulo 8b: Archivos JSON
1. Introducción a JSON
● JSON (JavaScript Object Notation) es un formato estándar basado en texto utilizado
para el almacenamiento y transferencia de datos estructurados entre sistemas.
● Su estructura se asemeja a los diccionarios y listas de Python:
○ Organiza los datos en pares clave: valor.
○ Las claves siempre están en formato de cadena.
○ Los valores pueden ser números, cadenas, booleanos, listas, diccionarios u
otros JSON.
Ejemplo:
3. Uso de JSON en Python
Python incluye el módulo estándar json para trabajar con este formato. Las principales
funciones son:
1. [Link](objeto_python):
● Convierte un objeto Python en una cadena JSON (serialización).
● Ejemplo:
Salida:
2. [Link](json_string):
● Convierte una cadena JSON en un objeto Python (deserialización).
● Ejemplo:
3. [Link](objeto_python, archivo):
● Escribe un objeto Python como JSON en un archivo.
● Ejemplo
4. [Link](archivo):
● Lee un archivo JSON y lo convierte en un objeto Python.
● Ejemplo
4. Conversión entre Python y JSON
De Python a JSON:
Los diccionarios y listas de Python se convierten en JSON fácilmente. Ejemplo:
De JSON a Python:
Los datos JSON se convierten en listas o diccionarios según su estructura. Ejemplo:
CRUD con Archivos JSON
El módulo incluye un ejemplo práctico que implementa las operaciones CRUD (Crear, Leer,
Actualizar y Eliminar) con un archivo JSON. El archivo representa empleados con atributos
como legajo, nombre, apellido, edad y estado.
a) Crear (Agregar datos)
Agrega un nuevo empleado al archivo JSON.
Código:
b) Leer (Listar datos)
● Muestra todos los empleados del archivo.
● Código
c) Actualizar (Modificar datos)
● Modifica un atributo de un empleado.
● Código:
d) Eliminar
● Elimina a un empleado basado en su legajo.
● Código
Uso del CRUD
El programa principal podría usarse así:
Salida esperada:
1. Lista inicial de empleados.
2. Nuevo empleado agregado.
3. Modificación de datos.
4. Eliminación del empleado agregado.
5. Lista final de empleados.