Módulo 15 - Arquivos de texto
Lendo arquivos: read, linha a linha e o arquivo que não existe
10 min de leitura · por Cesar Gargiulo, revisado pela equipe ValorFinal e GuardiaSec · Atualizado em 01/07/2026
O que você vai aprender
- Abrir um arquivo no modo r e ler todo o conteúdo com read.
- Percorrer um arquivo linha a linha com o for.
- Limpar o caractere de nova linha de cada linha lida usando strip.
- Tratar o FileNotFoundError com try e except quando o arquivo não existe.
Ouvir o resumo desta aula
Um recap de cerca de 2 minutos na voz do Valim, para ouvir no trânsito ou na academia.
Ler a transcrição do resumo
Resumo da aula: Lendo arquivos: read, linha a linha e o arquivo que não existe.
Os objetivos desta aula. Abrir um arquivo no modo r e ler todo o conteúdo com read. Percorrer um arquivo linha a linha com o for. Limpar o caractere de nova linha de cada linha lida usando strip. Tratar o FileNotFoundError com try e except quando o arquivo não existe.
Veja o essencial, parte por parte.
Lendo tudo de uma vez com read. open(nome, "r") abre o arquivo para leitura, e o método read devolve todo o conteúdo como texto.
Linha a linha com o for. Na escrita, você adiciona o caractere de nova linha no fim de cada write.
Quando o arquivo não existe. Falta encarar a diferença mais importante entre ler e escrever.
Esse foi o resumo do essencial. Para se aprofundar, leia a aula completa e responda os exercícios.
Lendo tudo de uma vez com read
Para ler, o ritual é o mesmo da escrita, mudando só a letra: open com o modo "r", de read, e depois o método de leitura. O mais direto é o read, que devolve o conteúdo inteiro do arquivo como um único texto, pronto para guardar numa variável ou mostrar com print. Crie um compras.txt como o da aula passada e leia de volta.
arquivo = open("compras.txt", "r")
conteudo = arquivo.read()
arquivo.close()
print(conteudo)
# Saída:
# Arroz
# Feijão
# CaféO read entrega o arquivo inteiro numa variável de texto. As quebras de linha vêm junto.
Repare que a variável conteudo é um texto comum, do tipo str que você domina desde o módulo 4. Tudo o que você aprendeu sobre textos vale para ela: medir com len, procurar com in, fatiar, converter. O read é ótimo quando você quer o arquivo inteiro de uma vez, para mostrar na tela ou procurar uma palavra. Quando o objetivo é tratar cada linha como uma informação separada, existe um jeito mais elegante, e ele é o assunto da próxima seção.
Linha a linha com o for
Aqui o Python mostra a elegância que o tornou famoso: um arquivo aberto pode ser percorrido pelo for, exatamente como uma lista. Cada volta do laço entrega uma linha. Se o seu arquivo segue o padrão de uma informação por linha, esse é o jeito natural de processá-lo: ler um item, tratar, passar para o próximo. É o mesmo for do módulo 9, aplicado a uma fonte nova.
arquivo = open("compras.txt", "r")
for linha in arquivo:
print("Item:", linha)
arquivo.close()
# Saída (repare nas linhas em branco extras):
# Item: Arroz
#
# Item: Feijão
#
# Item: CaféO for entrega uma linha por volta. Mas de onde vieram essas linhas em branco?
As linhas em branco na saída têm explicação: cada linha lida do arquivo vem com o caractere de nova linha grudado no fim, aquele mesmo que você escreveu na aula 2. Quando o print adiciona a quebra dele por cima, o resultado é o espaçamento duplo. A limpeza é responsabilidade sua, e a ferramenta é velha conhecida do módulo 12: o strip, que remove espaços e quebras das pontas do texto.
arquivo = open("compras.txt", "r")
for linha in arquivo:
item = linha.strip()
print("Item:", item)
arquivo.close()
# Saída:
# Item: Arroz
# Item: Feijão
# Item: Cafélinha.strip() tira a quebra de linha da ponta. Saída limpa, um item por linha.
Quando o arquivo não existe
Falta encarar a diferença mais importante entre ler e escrever. Os modos w e a criam o arquivo quando ele não existe; o modo r, não. Ler exige que o arquivo esteja lá, e se não estiver o Python levanta um erro com nome autoexplicativo: FileNotFoundError, arquivo não encontrado. É um erro comum de verdade: basta rodar o script numa pasta diferente, ou tentar ler um arquivo que o programa ainda não teve a chance de criar.
A boa notícia é que você já tem a ferramenta certa, recém-saída do módulo 14: o try/except. Em vez de deixar o programa quebrar com uma tela vermelha, você tenta ler dentro do try e trata o FileNotFoundError no except, com uma mensagem amigável ou um comportamento alternativo. É a primeira vez que dois módulos do curso se encaixam assim, e não será a última.
try:
arquivo = open("tarefas.txt", "r")
for linha in arquivo:
print(linha.strip())
arquivo.close()
except FileNotFoundError:
print("Nenhuma tarefa cadastrada ainda.")Se o tarefas.txt não existe, o programa não quebra: avisa com educação e segue a vida.
Leia esse exemplo com atenção, porque ele é um padrão profissional em miniatura: o arquivo que ainda não existe não é um defeito, é um estado esperado do programa, e o except transforma o erro numa resposta educada. A prática da aula 6 usa exatamente essa estrutura para a lista de tarefas funcionar de primeira, mesmo antes de qualquer tarefa ter sido salva.
Teste rápido
O que acontece ao executar open("dados.txt", "r") se o dados.txt não existe?
Perguntas frequentes
- Qual a diferença entre read e ler com o for?
- O read devolve o arquivo inteiro num único texto, bom para mostrar tudo ou procurar uma palavra. O for entrega uma linha por vez, ideal quando cada linha é uma informação separada, como itens de uma lista. Para arquivos grandes, o for também gasta menos memória, porque não carrega tudo de uma vez.
- Por que aparecem linhas em branco quando faço print de cada linha lida?
- Porque cada linha vem do arquivo com o caractere de quebra no fim, e o print adiciona outra quebra por conta própria. Ficam duas, e a saída sai com espaçamento duplo. O conserto é chamar strip na linha antes do print.
- O strip apaga a quebra de linha do arquivo original?
- Não. O strip devolve uma cópia limpa do texto; o arquivo no disco continua intacto. Aliás, ler um arquivo nunca modifica o conteúdo dele: para alterar algo no disco, é preciso abrir em modo de escrita.
- Posso guardar as linhas do arquivo numa lista?
- Pode, e é um padrão comum: crie uma lista vazia e, dentro do for, use append com linha.strip(). No fim, você tem uma lista de textos para usar como quiser, com tudo o que aprendeu no módulo 10. A prática da aula 6 faz exatamente isso.
- E se eu chamar read duas vezes seguidas no mesmo arquivo?
- A segunda chamada devolve um texto vazio. A leitura funciona como um marcador de página: o primeiro read vai até o fim e o marcador fica lá. Para ler de novo, o caminho simples é fechar e abrir o arquivo outra vez.
- FileNotFoundError também acontece na escrita?
- Com w e a apontando para uma pasta existente, não: esses modos criam o arquivo que falta. O erro aparece na escrita apenas se o caminho passar por uma pasta que não existe, por exemplo dados/notas.txt sem a pasta dados. Criar a pasta antes resolve.
Fontes
Seu progresso fica salvo neste aparelho. Assinantes sincronizam entre os aparelhos.