Cuando abres un recurso —un archivo, una conexión, un candado— tienes que CERRARLO al terminar, incluso si
ocurre un error en el medio. Olvidarlo causa fugas y datos corruptos. La sentencia with (los CONTEXT
MANAGERS) garantiza ese cierre automáticamente: abre el recurso, te deja usarlo, y lo cierra al salir del
bloque, pase lo que pase. Es una de las construcciones más elegantes de Python. Hoy la dominas y aprendes a
crear la tuya.
El grifo que se cierra solo
with: abrir y cerrar seguro
with open(...) as archivo: abre el archivo y lo asigna a archivo; al terminar el bloque indentado,
Python lo CIERRA automáticamente —no necesitas llamar a close()—. Y lo hace INCLUSO si ocurre un error
dentro del bloque (ahí está su magia). Sin with, tendrías que cerrar el archivo a mano y envolver todo en
try/finally para asegurarlo. El with hace eso por ti, limpio. (Nota: aquí el archivo vive en la memoria
del navegador; en tu Python instalado sería un archivo real en tu disco.)
Por qué with y no cerrar a mano
Crear tu propio context manager
¿Qué garantiza la sentencia with y por qué se prefiere a cerrar un recurso manualmente?
Mini-reto
Usa y crea context managers: 1) escribe una lista de gastos en un archivo con with open(..., "w") (una
línea por gasto) y léelo de vuelta con otro with; 2) crea un context manager @contextmanager llamado
seccion(titulo) que imprima una línea de = con el título al entrar y otra al salir (para enmarcar la
salida de un bloque); 3) úsalo con with seccion("Reporte"): alrededor de unos print. Observa cómo el
"antes" y el "después" se ejecutan solos.
Qué sigue
Ya manejas recursos con seguridad. La próxima lección profundiza en el trabajo con ARCHIVOS usando pathlib
—la forma moderna de manejar rutas y archivos en Python— para leer, escribir y organizar datos en tu disco.
La base para que tus programas recuerden cosas entre ejecuciones.