title: Diario personal description: Un script que escribe entradas fechadas en un archivo y te permite leer las antiguas.
Diario personal
Dex Oye. Honestamente la misión ha sido mucho y he estado pensando en llevar un registro. ¿Puedes construir una aplicación de diario simple? Quiero escribir una entrada nueva, que se guarde con la fecha, y poder leer las antiguas. Nada complicado. Solo algo para sacar los pensamientos de mi cabeza ✍️
Lo que estás construyendo
Comandos: new / read / quit
> new
2026-05-24
Tuve una mañana productiva. Terminé el proyecto del gestor de inventario.
Finalmente entendí cómo funciona la serialización de JSON.
[presiona Enter en una línea vacía para guardar]
Entrada guardada.
> read
--- 2026-05-24 ---
Tuve una mañana productiva. Terminé el proyecto del gestor de inventario.
Finalmente entendí cómo funciona la serialización de JSON.
--- 2026-05-23 ---
...
> quitLo que necesitarás
- Files and exceptions - modo append para nuevas entradas, leer el archivo completo, manejar un archivo faltante en la primera ejecución
- Modules and the standard library -
datetimepara obtener la fecha de hoy como una cadena - Strings - formatear el encabezado de fecha, dividir el contenido del archivo de vuelta en entradas
- Control flow - el bucle de comandos, el bucle de entrada multilínea para escribir una entrada
- Output and input
Pistas
El modo append es la clave. Abrir un archivo con "a" agrega al final sin tocar lo que hay. Así es como entran nuevas entradas sin eliminar las antiguas.
datetime.date.today() te da la fecha. Conviértela a una cadena con str() o una f-string para usarla como encabezado de entrada. El módulo datetime está en la biblioteca estándar.
Recopila la entrada antes de escribir. Permite que el usuario escriba múltiples líneas, agregando cada una a una lista. Cuando envíen una línea vacía, une la lista y escribe toda la entrada a la vez.
Ir más allá
Una vez que el diario principal funcione:
- Limita lo que muestra
read. Imprimir siempre el archivo completo se vuelve engorroso rápidamente. Muestra solo las últimas tres entradas por defecto, con una opción para mostrar más. - Busca entradas. Agrega un comando
searchque imprima cualquier entrada que contenga una palabra clave. - Recuento de palabras por entrada. Muestra cuántas palabras contiene cada entrada cuando la muestres.

