Dicionário do Pequeno Programador 🐍

Anexo 05 - Aulas 9 e 10

Arquivos e Projeto Final! Aprenda a salvar dados e integrar tudo que você aprendeu!

Arquivos - A Memória Permanente (Aula 9) 💾

Conceito O que é? 🤔 Exemplo em Código
Arquivo 📄 É como um caderno digital onde você pode escrever informações e elas ficam salvas mesmo quando o programa termina! arquivo = open("dados.txt", "w")
Persistência 🏛️ Capacidade de lembrar informações mesmo depois que o computador é desligado, como uma memória permanente Salvar pontuação de jogos, lista de contatos, diário pessoal
Encoding 🌍 O "idioma" que o arquivo usa para entender acentos e caracteres especiais (use sempre "utf-8"!) open("arquivo.txt", "w", encoding="utf-8")

Modos de Abertura de Arquivos 🚪

Modo O que faz? 📝 Exemplo
"w" (write) ✏️ Escrever - Cria um arquivo novo ou apaga tudo do arquivo antigo e escreve do zero open("novo.txt", "w")
⚠️ Cuidado: apaga tudo!
"a" (append) ➕ Anexar - Adiciona texto no final do arquivo sem apagar o que já estava lá open("diario.txt", "a")
✅ Seguro: mantém o conteúdo
"r" (read) 👁️ Ler - Apenas lê o conteúdo do arquivo, sem modificar nada open("dados.txt", "r")
📖 Só para consultar
"r+" 🔄 Ler e Escrever - Pode tanto ler quanto modificar o arquivo open("config.txt", "r+")
🛠️ Para editar

Operações com Arquivos 📂

Operação O que faz? ⚙️ Exemplo
.write(texto) ✍️ Escreve texto no arquivo (não pula linha automaticamente!) arquivo.write("Olá mundo!\n")
🔤 \n = quebra de linha
.read() 📖 Lê todo o conteúdo do arquivo de uma vez conteudo = arquivo.read()
📜 Pega tudo
.readline() 📝 Lê apenas uma linha por vez do arquivo linha = arquivo.readline()
📄 Linha por linha
.readlines() 📋 Lê todas as linhas e coloca cada uma em uma lista linhas = arquivo.readlines()
📝 Lista de linhas
.close() 🚪 Fecha o arquivo para liberar memória (muito importante!) arquivo.close()
🔒 Sempre feche!

With Statement - O Jeito Seguro 🛡️

Conceito Por que usar? 🌟 Exemplo
with open() 🔐 Abre o arquivo e fecha automaticamente quando termina, mesmo se der erro! with open("dados.txt", "w") as arquivo:
    arquivo.write("Seguro!")
Gerenciamento Automático 🤖 Você não precisa lembrar de fechar o arquivo - o Python faz isso sozinho Evita vazamentos de memória e arquivos travados
Tratamento de Erros 🚨 Se algo der errado, o arquivo é fechado corretamente antes de mostrar o erro try:
    with open("arquivo.txt") as f:
        conteudo = f.read()
except FileNotFoundError:
    print("Arquivo não existe!")

Tratamento de Erros com Arquivos 🚨

Erro Quando acontece? 🤷‍♀️ Como tratar
FileNotFoundError 🔍 Tentou abrir um arquivo que não existe except FileNotFoundError:
    print("Arquivo não encontrado!")
    criar_arquivo_novo()
PermissionError 🚫 Não tem permissão para mexer no arquivo (pode estar aberto em outro programa) except PermissionError:
    print("Feche o arquivo em outros programas!")
UnicodeDecodeError 🌐 Problema com encoding - arquivo com caracteres especiais open("arquivo.txt", "r", encoding="utf-8")
🌍 Sempre use utf-8!

Projeto Final - Integração Total (Aula 10) 🏆

Conceito Usado Onde aparece? 🎯 Exemplo no Projeto
Variáveis 📦 Guardar dados das pessoas: nome, idade, email, cidade nome = input("Nome: ")
idade = int(input("Idade: "))
Listas 📋 Armazenar todos os cadastros em uma lista principal pessoas = []
pessoas.append(nova_pessoa)
Dicionários 🗂️ Organizar dados de cada pessoa de forma estruturada pessoa = {"nome": nome, "idade": idade, "email": email}
Funções ⚙️ Cada funcionalidade do sistema é uma função separada def adicionar_pessoa():
def listar_pessoas():
def buscar_pessoa():
If/Elif/Else 🚦 Menu de opções e validações de entrada if opcao == "1":
    adicionar_pessoa()
elif opcao == "2":
    listar_pessoas()
Loops While 🔄 Menu principal que roda até o usuário sair while True:
    mostrar_menu()
    opcao = input("Escolha:")
Loops For 🔁 Percorrer lista de pessoas para listar ou buscar for pessoa in pessoas:
    if nome_busca in pessoa["nome"]:
        print(pessoa)
Try/Except 🛡️ Validar entrada de números (idade) sem quebrar o programa try:
    idade = int(input("Idade:"))
except ValueError:
    print("Digite um número!")

Estrutura do Projeto Final 🏗️

Função O que faz? 🎪 Conceitos Integrados
mostrar_menu() 📋 Exibe as opções disponíveis para o usuário Função simples, print(), formatação
adicionar_pessoa() Cadastra nova pessoa com validação completa Input, variáveis, try/except, dicionários, listas
listar_pessoas() 👥 Mostra todos os cadastros de forma organizada Loops for, enumerate, condições, formatação
buscar_pessoa() 🔍 Procura pessoas por nome (busca parcial) Input, loops, condições, strings, listas
remover_pessoa() Remove cadastro da lista com confirmação Busca, validação, remoção de listas, confirmação
mostrar_estatisticas() 📊 Calcula estatísticas dos dados cadastrados Funções matemáticas, loops, dicionários, análise
main() 🎯 Função principal que coordena todo o sistema Loop while, menu, todas as outras funções

Exemplos Práticos Completos 💡

Programa O que faz? 🎪 Código Base
Diário Digital 📔 Salva entradas de diário com data e hora with open("diario.txt", "a") as arquivo:
    data = datetime.now()
    arquivo.write(f"[{data}] {entrada}\n")
Sistema de Cadastro 👥 Projeto final integrando todos os conceitos pessoas = []
def main():
    while True:
        mostrar_menu()
        opcao = input("Opção:")
        if opcao == "1":
            adicionar_pessoa()
Backup de Lista 💾 Salva e carrega listas em arquivos # Salvar
with open("lista.txt", "w") as f:
    for item in lista:
        f.write(item + "\n")

# Carregar
with open("lista.txt", "r") as f:
    lista = f.read().splitlines()

Dicas Importantes 💡

Dica Por que é importante? 🌟 Exemplo
Sempre use "with" Garante que o arquivo seja fechado corretamente, evitando problemas with open("arquivo.txt", "w") as f:
    f.write("Seguro!")
Encoding="utf-8" Permite usar acentos e caracteres especiais sem erro open("dados.txt", "w", encoding="utf-8")
Trate erros de arquivo Arquivos podem não existir ou dar problema - sempre trate isso! try:
    with open("arquivo.txt") as f:
        dados = f.read()
except FileNotFoundError:
    print("Arquivo não existe!")
Organize em funções Projetos grandes ficam mais fáceis quando cada parte tem sua função def salvar_dados():
def carregar_dados():
def processar_dados():
Teste tudo No projeto final, teste todas as opções para garantir que funciona Teste casos normais, extremos, entradas inválidas