0Pricing
Python Academy · Lección

Uso de la sentencia with para archivos

Asegúrese de que los archivos se cierren automáticamente mediante gestores de contexto.

Uso de la sentencia with para archivos es una lección gratuita de Python Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Python Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Python Academy incluye 4 lecciones en total.

Introducción

La sentencia with garantiza que los archivos se cierren automáticamente, incluso si se produce una excepción.

La sentencia with

with open('file.txt') as f: ... cierra f automáticamente cuando termina el bloque, tanto si finaliza normalmente como si se produce una excepción.
# with open('data.txt') as f:
#     content = f.read()
# f is now closed
print('with demo')

Por qué with es mejor que try/finally

Sin with, debe escribir try: ... finally: f.close() para garantizar el cierre. with se encarga de ello automáticamente.
# Equivalent to:
# f = open('file.txt')
# try:
#     content = f.read()
# finally:
#     f.close()
print('comparison demo')

Varios archivos

with open('a.txt') as a, open('b.txt') as b: abre dos archivos en una sola sentencia.
# with open('in.txt') as src, open('out.txt','w') as dst:
#     for line in src:
#         dst.write(line.upper())
print('multi-file demo')

Protocolo de gestor de contexto

with utiliza __enter__ y __exit__. open() devuelve un objeto de archivo que implementa estos métodos. Más adelante escribiremos nuestro propio gestor.
# f.__enter__() opens
# f.__exit__() closes
print('protocol demo')

Lectura y procesamiento

Combine with, for line in f: y .strip() para procesar las líneas limpiamente: elimine los saltos de línea y omita las líneas vacías.
lines = ['  hello  \n', '  world  \n']
cleaned = [l.strip() for l in lines if l.strip()]
print(cleaned)

Escritura con with

with open('out.txt','w') as f: f.write('data') — el archivo se vacía y se cierra al salir del bloque.
# with open('out.txt', 'w') as f:
#     for i in range(10):
#         f.write(f'{i}\n')
print('write with demo')

Comprobar si existe un archivo

import os; os.path.exists('file.txt') devuelve True si el archivo existe. Evita FileNotFoundError.
import os
print(os.path.exists('/tmp'))
print(os.path.exists('/nonexistent'))

Errores de open()

FileNotFoundError: el archivo no existe. PermissionError: no hay permisos de lectura o escritura. Utilice try/except para gestionar estos casos de forma robusta.
try:
    with open('/nonexistent.txt') as f:
        pass
except FileNotFoundError as e:
    print('File not found:', e)

StringIO para archivos en memoria

from io import StringIO permite utilizar una cadena como objeto de archivo, lo que resulta excelente para probar código que procesa archivos.
from io import StringIO
buf = StringIO('line1\nline2\n')
for line in buf:
    print(line.rstrip())

Módulo tempfile

tempfile.NamedTemporaryFile() crea un archivo temporal que se elimina al cerrarse. Es seguro para procesar datos transitorios.
import tempfile
with tempfile.NamedTemporaryFile(mode='w', suffix='.txt', delete=True) as f:
    f.write('temp data')
    print(f.name)

Comprobación rápida

¿Qué garantiza la sentencia with cuando se utiliza con operaciones de entrada y salida de archivos?

Resumen

with open(f) as h: cierra h automáticamente. Utilice varios destinos para varios archivos. Use StringIO para pruebas en memoria. Gestione FileNotFoundError correctamente.

Siga avanzando

¡Excelente trabajo! Continúe con la siguiente lección para seguir progresando.

Preguntas frecuentes

¿La lección «Uso de la sentencia with para archivos» es gratis?

Sí — el texto completo de «Uso de la sentencia with para archivos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Python Academy, actualiza a CoddyKit PRO. El curso de Python Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Uso de la sentencia with para archivos»?

Asegúrese de que los archivos se cierren automáticamente mediante gestores de contexto. Practicas Python Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Python Academy?

No se requiere experiencia previa. Python Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Uso de la sentencia with para archivos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Python Academy?

Sí. Cada lección de Python Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Apertura y lectura de archivos
  2. Escritura y adición en archivos
  3. Uso de la sentencia with para archivos
  4. Trabajo con rutas de archivos mediante pathlib
← Volver a Python Academy