title: Diário pessoal description: Um script que escreve entradas datadas em um arquivo e permite que você leia as antigas.
Diário pessoal
Dex Oi. Honestamente a missão tem sido pesada e eu estava querendo manter um registro. Você consegue criar um app de diário simples? Quero digitar uma nova entrada, tê-la salva com a data, e conseguir ler as antigas. Nada complicado. Só algo para tirar os pensamentos da minha cabeça ✍️
O que você está criando
Commands: new / read / quit
> new
2026-05-24
Tive uma manhã produtiva. Finalizei o projeto do gerenciador de inventário.
Entendi como a serialização JSON funciona corretamente.
[pressione Enter em uma linha vazia para salvar]
Entrada salva.
> read
--- 2026-05-24 ---
Tive uma manhã produtiva. Finalizei o projeto do gerenciador de inventário.
Entendi como a serialização JSON funciona corretamente.
--- 2026-05-23 ---
...
> quitO que você vai precisar
- Arquivos e exceções - modo append para novas entradas, ler o arquivo inteiro de volta, lidar com um arquivo faltante na primeira execução
- Módulos e a biblioteca padrão -
datetimepara a data de hoje como uma string - Strings - formatação do cabeçalho de data, dividindo o conteúdo do arquivo de volta em entradas
- Fluxo de controle - o loop de comandos, o loop de entrada multi-linha para escrever uma entrada
- Saída e entrada
Dicas
Modo append é a chave. Abrir um arquivo com "a" adiciona ao final sem mexer no que está lá. É assim que novas entradas vão sem deletar as antigas.
datetime.date.today() te dá a data. Converta para uma string com str() ou uma f-string para usar como o cabeçalho da entrada. O módulo datetime está na biblioteca padrão.
Colete a entrada antes de escrever. Deixe o usuário digitar múltiplas linhas, adicionando cada uma a uma lista. Quando eles submeterem uma linha vazia, junte a lista e escreva a entrada inteira de uma vez.
Expandindo
Uma vez que o diário principal funciona:
- Limite o que
readmostra. Sempre imprimir o arquivo inteiro fica complicado rápido. Mostre apenas as últimas três entradas por padrão, com uma opção para mostrar mais. - Procure por entradas. Adicione um comando
searchque imprime qualquer entrada contendo uma palavra-chave. - Contagem de palavras por entrada. Mostre quantas palavras cada entrada contém ao exibi-la.

