Las variables desaparecen cuando termina el proceso. Si quieres conservar información entre sesiones debes escribirla en algún soporte, por ejemplo un archivo. En esta lección guardarás y recuperarás texto con una ruta explícita. También aprenderás a distinguir un archivo que no existe de un fallo que no conviene ignorar.
Elegir dónde guardar
Una ruta identifica la ubicación de un archivo. Puede ser absoluta, si parte de una ubicación completa del sistema, o relativa, si se interpreta desde una carpeta de referencia. Escribir simplemente notas.txt utiliza la carpeta de trabajo actual. Esa carpeta no siempre coincide con la del programa.
Para los ejemplos guardaremos los datos junto al archivo de Python. Utilizaremos Path(__file__).resolve().parent para obtener la carpeta del script. __file__ está disponible en archivos ejecutados como scripts o módulos pero no en todos los entornos interactivos. Guarda el código en un .py y ejecútalo como has practicado.
from pathlib import Path
carpeta = Path(__file__).resolve().parent
ruta = carpeta / "notas-prueba.txt"
print(ruta)
La barra combina componentes de una ruta mediante Path. No está haciendo una división numérica en este contexto. Mostrar ruta antes de escribir ayuda a confirmar el destino. Utiliza una carpeta de prácticas donde tengas permiso y no archivos personales importantes.
Escribir texto y leerlo otra vez
Path ofrece métodos sencillos para escribir y leer texto. Indicaremos encoding=»utf-8″ para tratar tildes y otros caracteres de forma consistente. Sin una codificación explícita el comportamiento puede depender de la configuración del entorno.
from pathlib import Path
ruta = Path(__file__).resolve().parent / "notas-prueba.txt"
texto = "Primera práctica\nRevisión de código\n"
ruta.write_text(texto, encoding="utf-8")
recuperado = ruta.read_text(encoding="utf-8")
print(recuperado)
La secuencia \n representa un salto de línea dentro de la cadena. El archivo contendrá dos líneas de contenido. No escribas una barra invertida adicional salvo que quieras guardar literalmente esos caracteres. Abre el archivo con un editor de texto para comprobar su contenido y compáralo con la variable recuperado.
write_text sustituye el contenido de un archivo existente. No añade automáticamente al final. Antes de ejecutar una segunda vez decide si reemplazar es lo que quieres. En esta práctica utilizamos un archivo dedicado y reproducible. En una aplicación real esa decisión debe formar parte explícita del diseño de guardado.
Añadir sin sustituir
Cuando necesitas añadir una entrada al final puedes abrir un archivo en modo «a». La sentencia with gestiona el cierre del recurso al salir del bloque, también si se produce una excepción. Es una forma clara de trabajar con archivos cuando necesitas operaciones más específicas.
from pathlib import Path
ruta = Path(__file__).resolve().parent / "diario-prueba.txt"
with ruta.open("a", encoding="utf-8") as archivo:
archivo.write("Sesión de práctica completada\n")
Cada ejecución añade otra línea. Si lo pruebas tres veces tendrás tres entradas iguales. Eso es coherente con el modo elegido, no un fallo de duplicación. Para un listado completo de tareas normalmente preferiremos guardar el estado entero en vez de añadir indiscriminadamente líneas nuevas.
El modo «w» escribe reemplazando el contenido y el modo «r» lee. No utilices «w» para comprobar si puedes abrir un archivo cuyo contenido quieres conservar: podrías vaciarlo. Para inspeccionar utiliza lectura. El permiso para acceder a una ruta no implica que debas modificarla durante una prueba.
Cuando el archivo todavía no existe
La primera ejecución de una aplicación puede no tener datos guardados. Puedes capturar FileNotFoundError y aplicar una respuesta prevista. En este ejemplo mostramos un aviso sin crear automáticamente un archivo vacío sobre otro nombre inesperado.
from pathlib import Path
ruta = Path(__file__).resolve().parent / "lectura-prueba.txt"
try:
contenido = ruta.read_text(encoding="utf-8")
except FileNotFoundError:
print("Todavía no existe el archivo de prueba")
else:
print(contenido)
No trates cualquier error de lectura como si el archivo estuviera vacío. Un problema de permisos, una ruta que apunta a un directorio o una codificación incorrecta tienen causas distintas. Ocultarlos puede llevar a crear datos nuevos y reemplazar información que seguía existiendo pero no podías leer.
Conservar una copia antes de experimentar
Antes de probar operaciones de sustitución sobre datos que quieras conservar guarda una copia con otro nombre. Identifica qué versión es la original y cuál es la prueba. No dependas de recordar qué ventana estaba abierta. El nombre y la ubicación deben permitir reconstruirlo después.
Una copia situada en la misma carpeta protege frente a una edición accidental pero no frente a todos los problemas del dispositivo. Para este curso basta con comprender el límite y trabajar con datos ficticios. Si aplicas lo aprendido a documentos importantes necesitarás un procedimiento de copias más completo y comprobar que puedes restaurarlas.
También distingue terminar de escribir y confirmar que el contenido puede recuperarse. Una operación de guardado solo es útil si sabes dónde está el archivo y puedes leerlo después. La prueba de cerrar el programa y volver a abrir los datos forma parte del trabajo, no es un paso ornamental.
Errores habituales
- Guardar en una carpeta distinta de la que estabas mirando.
- Confundir escritura de reemplazo con añadido al final.
- Omitir la codificación y obtener caracteres incorrectos.
- Interpretar cualquier error de lectura como ausencia de datos.
- Probar operaciones destructivas sobre el único archivo que deseas conservar.
Lo que deberías recordar
- La ruta determina dónde se leen y escriben los datos.
- write_text reemplaza el contenido existente.
- UTF-8 permite tratar el texto de manera explícita y consistente.
- Un archivo inexistente y uno ilegible requieren decisiones diferentes.
Ejercicio práctico
En la decimoquinta hoja registra la ruta completa de notas-prueba.txt. Guarda dos líneas con tildes, cierra el programa y crea una ejecución que solo las lea. Compara el texto recuperado con el original.
Después prueba la lectura de lectura-prueba.txt cuando todavía no existe y observa el aviso previsto. Crea ese archivo manualmente y repite la lectura. Por último añade dos entradas a diario-prueba.txt con modo «a». Anota la diferencia entre reemplazar, leer y añadir utilizando los resultados reales de tus archivos.
Siguiente capítulo: Conservar datos estructurados con JSON.








