🚀 Capítulo 09: Investigando Arquivos

NOTE

Este capítulo utiliza a temática de Sherlock Holmes para explicar a leitura e escrita de arquivos em Python. Aprenda a persistir dados em arquivos de texto!


🎯 Objetivo da Aula

Compreender como abrir, ler e escrever em arquivos de texto usando Python, utilizando a boa prática do gerenciador de contexto with.

🏢 O Cenário Prático (Seu Desafio)

O detetive Sherlock Holmes precisa anotar todas as pistas de um caso para não esquecê-las. Se ele apenas guardar na mente (na memória RAM do computador), as pistas somem quando ele for dormir (quando o programa fechar). Para evitar isso, ele anota tudo em seu caderninho (arquivos salvos no disco rígido).

No Python, nós podemos criar e ler arquivos de texto muito facilmente.

  • O desafio é usar as funções de arquivo para salvar as pistas do caso e depois lê-las de volta!

🧠 Fundamentos: A Teoria Traduzida

📝 1. O Jeito Moderno (with open):

Para mexer em arquivos, usamos a função open(). A melhor prática é usar junto com a palavra with. O with garante que o arquivo seja fechado automaticamente quando terminarmos de usar, mesmo se der algum erro no meio do caminho!

✍️ 2. Escrevendo em um Arquivo (Modo w):

O modo 'w' (write) apaga tudo o que tinha no arquivo e escreve do zero. Se o arquivo não existir, o Python cria ele para você!

with open("pistas.txt", "w") as arquivo:
    arquivo.write("Suspeito 1: O Mordomo\n")
    arquivo.write("Pista 2: Pegadas na lama\n")

📖 3. Lendo um Arquivo (Modo r):

O modo 'r' (read) serve apenas para ler o conteúdo.

with open("pistas.txt", "r") as arquivo:
    conteudo = arquivo.read()
    print(conteudo)

📖 Exemplo Guiado: Adicionando Pistas (Modo a)

Se você não quiser apagar o que já estava escrito, use o modo 'a' (append), que adiciona o novo texto no final do arquivo:

with open("pistas.txt", "a") as arquivo:
    arquivo.write("Nova pista: Um bilhete rasgado.\n")
 
 
# Lendo para ver como ficou
with open("pistas.txt", "r") as arquivo:
    print(arquivo.read())

🛠️ Prática Obrigatória 1: Criando o Arquivo

  1. Escreva o código em Python para criar um arquivo chamado diario.txt e escrever nele a frase "Elementar, meu caro Watson." usando o bloco with.

🛠️ Prática Obrigatória 2: Modos de Abertura

  1. O que acontece se você tentar abrir um arquivo no modo 'r' (leitura), mas esse arquivo não existir na pasta?

📤 Instruções de Entrega (GitHub Desktop + Microsoft Teams)

Neste curso, você entregará suas atividades enviando o código para o seu repositório no GitHub usando o aplicativo GitHub Desktop. Siga o passo a passo detalhado:

  1. Verifique a estrutura: Certifique-se de que sua estrutura de pastas final está idêntica à mostrada abaixo.
  2. Abra o GitHub Desktop: Certifique-se de que o repositório do seu curso está selecionado no canto superior esquerdo.
  3. Visualize as alterações: Na aba Changes (à esquerda), você verá todos os arquivos que criou ou modificou nesta aula.
  4. Faça o Commit:
    • No campo Summary (na parte inferior esquerda), digite uma mensagem curta descrevendo o que fez, ex: Finaliza atividades do Capítulo.
    • Clique no botão azul Commit to main (ou o nome da sua branch).
  5. Envie para a Nuvem (Push): No topo da tela, clique no botão Push origin. Isso enviará seu código do seu computador para o seu perfil no GitHub.
  6. ⚠️ IMPORTANTE (Repositório Público): Para que o professor consiga corrigir, o seu repositório no GitHub DEVE SER PÚBLICO. Repositórios privados não podem ser visualizados por quem não foi convidado.
  7. Como entregar no Microsoft Teams:
    • Copie o link do seu repositório no GitHub (ex: https://github.com/seu-usuario/seu-repositorio).
    • Abra a tarefa correspondente no Microsoft Teams.
    • Clique no botão Adicionar trabalho (ou Add work).
    • Selecione a opção Link no menu lateral.
    • Cole o link do GitHub no campo “Endereço Web” e digite um texto (ex: Meu Repositório) no campo “Texto a ser exibido”.
    • Clique em Anexar.
    • MUITO IMPORTANTE: Clique no botão Entregar (ou Turn in) no canto superior direito para concluir o envio!

📂 Estrutura de Pastas

spec_backend_com_python_e_fastapi/
├── capitulos/
│   └── capitulo_09_sherlock.md

💡 Checkpoint de Lógica

O caractere \n serve para pular uma linha no arquivo de texto. Se você não colocar ele no final do write(), o Python vai escrever tudo grudado na mesma linha!

🔥 Desafio de Fixação (Opcional)

Pesquise como ler um arquivo de texto linha por linha usando um loop for (Dica: for linha in arquivo:).

🔑 Gabarito de Código/Fórmulas

Gabarito da Prática 1:

with open("diario.txt", "w") as arquivo:
    arquivo.write("Elementar, meu caro Watson.")

Gabarito da Prática 2:

  1. O Python vai dar um erro do tipo FileNotFoundError e o programa vai parar (a menos que você trate com try/except!).

Capitulo Anterior | Proximo Capitulo