Ficheiros, exceções e testes

Módulos, persistência em texto, CSV, tratamento de falhas, asserções e depuração.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Módulos

  • import math permite math.sqrt; from math import sqrt introduz sqrt no âmbito atual.
  • Instruções no nível do módulo executam ao importar. Guarda a interface de entrada/saída em if __name__ == "__main__": para correr apenas na execução direta.

Ficheiros de texto e CSV

  • open(caminho, modo, encoding="utf-8") abre texto. Caminhos relativos partem da pasta de trabalho do processo.
ModoEfeito
"r"Lê; falha se faltar
"w"Cria ou substitui todo o conteúdo
"a"Acrescenta no fim; cria se faltar
"x"Cria; falha se já existir
  • with fecha o recurso mesmo quando há uma exceção. read() lê tudo; for linha in ficheiro percorre linhas.
  • readline() devolve "" no fim do ficheiro; uma linha em branco pode ser "\n". Não são o mesmo caso.
  • write recebe texto, não acrescenta uma mudança de linha e devolve o número de caracteres escritos.
  • Para CSV, usa csv.reader, DictReader ou writer, com newline="". Campos podem conter vírgulas e aspas; split(",") não chega. Os campos lidos são strings; converte os números.
Escrever e recuperar inteiros
with open("notas.txt", "w", encoding="utf-8") as ficheiro:
    ficheiro.write("12\n16\n")

with open("notas.txt", "r", encoding="utf-8") as ficheiro:
    notas = [int(linha.strip()) for linha in ficheiro]

print(notas)
print(sum(notas) / len(notas))
Resultado

Executa o código para ver a saída e os gráficos.

A saída é [12, 16] e 14.0.

  • Este formato exige linhas com inteiros e uma lista não vazia para a média.
  • No editor, o ficheiro dura só esta execução; num programa local fica no disco.

Exceções

BlocoQuando executa
tryTenta a operação
except TipoTrata uma exceção compatível do corpo de try
elseSó quando try termina normalmente, sem exceção nem return, break ou continue
finallyAo sair, mesmo com exceção ou retorno
  • Uma falha em else não volta ao except associado.

  • Trata o erro esperado, como ValueError numa conversão, sem esconder falhas diferentes.

  • raise comunica uma violação do contrato.

  • Decide se uma falha pede novos dados, ignora uma linha ou termina, em vez de inventar um resultado válido.

  • FileNotFoundError é também um OSError. Python escolhe o primeiro tratador compatível: põe o mais específico antes do geral.

  • Sem tratador compatível, a exceção propaga-se ao chamador; não retoma a instrução seguinte à falha dentro do mesmo try.

Asserções e testes

  • assert verifica uma hipótese interna, mas pode ser desativado com otimizações. Valida entradas explicitamente.
  • Calcula expectativas independentemente. Inclui um caso normal, fronteiras e entradas inválidas previstas; testes finitos não demonstram correção geral.
  • Para aproximações numéricas, usa uma tolerância adequada, por exemplo com math.isclose. Para depurar, reproduz a menor entrada útil e encontra o primeiro estado diferente do esperado.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.