Cargando...

Cerrar el archivo con seguridad

En la página anterior escribías close a mano. Si el programa se detenía antes de esa línea, el archivo podía quedar abierto. with se encarga de eso: cierra el archivo cuando terminan las líneas con sangría, y también si una de ellas se detiene a medias.

la pantalla muestra saved, bread queda en el archivo

python
with open("plate.txt", "w", encoding="utf-8") as plate:
    plate.write("bread\n")
print("saved")

En la pantalla solo aparece saved. bread está en plate.txt, no en la pantalla. write se ejecutó mientras el archivo estaba abierto. Después terminó el sangrado, el archivo se cerró y solo entonces se ejecutó print. Este programa no tiene close: no lo añadas después de print ni dentro del sangrado. El nombre plate es el archivo abierto, pero únicamente hasta que acaba el sangrado. encoding="utf-8" guarda las letras como texto, y w sigue borrando lo que hubiera antes en el archivo.

La línea write lleva sangría bajo with, y eso es lo que la deja dentro. print("saved") no tiene sangría, así que queda fuera y solo se ejecuta si lo de dentro termina sin detenerse.

Si escribes 1 / 0 con esa misma sangría, el programa se detiene y saved no se escribe. Aun así el archivo se cierra, porque salir de la sangría lo cierra antes de que el programa acabe en esa detención. Esa línea no está en el programa de esta página.

En la próxima página veremos la ruta del archivo. Aquí solo nos hemos ocupado de cerrarlo.

El archivo se cierra cuando acaba el sangrado

En pantalla sale saved, plate.txt contiene bread y aquí no hay close. Si una línea dentro del sangrado se detiene, el archivo se cierra igualmente y saved no se escribe. La próxima página trata de la ruta del archivo.

🧠 Pon a Prueba tu Conocimiento

Listo para Empezar

Pon a Prueba tu Conocimiento

Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema

❓
5
Preguntas
🎯
70%
Para Aprobar
♾️
∞
Tiempo
🔄
∞
Intentos

📝 Instrucciones

  • Lee cada pregunta cuidadosamente
  • Selecciona la mejor respuesta para cada pregunta
  • Puedes repetir el quiz tantas veces como quieras
  • Tu progreso se mostrará en la parte superior