Pular para o conteúdo principal

Como ler um arquivo linha por linha em Python

Aprenda padrões práticos para trabalhar com arquivos de texto, logs e grandes conjuntos de dados em Python.
Atualizado 24 de jan. de 2026  · 6 min lido

Python tem várias maneiras de ler arquivos linha por linha e, à primeira vista, todas elas podem parecer iguais. Na prática, porém, a escolha que você faz afeta o uso da memória, o desempenho e até mesmo a legibilidade do seu código. Algumas abordagens funcionam bem com arquivos grandes, enquanto outras podem trazer problemas sem que a gente perceba.

Neste tutorial, você vai aprender a maneira recomendada de ler um arquivo linha por linha em Python e por que isso geralmente deve ser sua configuração padrão. Também vamos ver algumas alternativas, explicar quando elas fazem sentido e apontar erros comuns que costumam confundir as pessoas. No final, você vai conseguir ler arquivos com confiança e eficiência, seja escrevendo um script rápido ou fazendo algo mais complexo.

A maneira recomendada de ler um arquivo linha por linha em Python

Se você só vai lembrar de um padrão deste artigo, que seja este. Na maioria das vezes, iterar diretamente sobre um objeto de arquivo é a maneira mais simples, segura e eficiente de ler um arquivo linha por linha, e é a abordagem que você verá com mais frequência em código Python real.

Basicamente, um objeto de arquivo em Python já é um iterador. Isso quer dizer que você pode fazer um loop direto e pegar uma linha de cada vez:

with open("example.txt", "r", encoding="utf-8") as file:
    for line in file:
        print(line)

Faz exatamente o que parece. Python abre o arquivo e mostra cada linha, uma por uma, conforme o loop rola. Não tem indexação manual, chamadas de funções extras nem complexidade escondida.

Uma das maiores vantagens dessa abordagem é a eficiência da memória. O Python não carrega o arquivo inteiro na memória. Em vez disso, ele lê uma única linha, processa-a e passa para a próxima. Isso torna esse padrão seguro mesmo para arquivos muito grandes, como logs ou exportações de dados brutos.

É também a solução mais Python. Iterar diretamente sobre um objeto de arquivo é claro, legível e imediatamente compreensível para qualquer pessoa familiarizada com Python. Isso é importante à medida que os scripts crescem ou quando outras pessoas precisam ler seu código mais tarde.

Por causa desses benefícios, essa deve ser sua escolha padrão, a menos que você tenha um motivo bem específico para fazer outra coisa. Ele lida automaticamente com arquivos grandes, se adapta bem conforme o tamanho dos arquivos aumenta e evita o uso desnecessário de memória — tudo isso sem adicionar complexidade extra.

Como lidar com novas linhas e espaços em branco ao ler linhas em Python

Se você já imprimiu linhas de um arquivo e percebeu linhas em branco inesperadas ou se perguntou por que as strings não parecem muito corretas, você se deparou com o comportamento de nova linha do Python. Esse é um dos problemas mais comuns para iniciantes e vale a pena entender isso logo no início. 

Quando o Python lê um arquivo linha por linha, cada linha geralmente termina com um caractere de nova linha (\n). Essa nova linha faz parte da linha em si, não é algo que o Python adiciona depois. 

Por exemplo, um arquivo que se parece com este:

apple
banana
cherry

na verdade, é lido como: 

apple\nbanana\n e cherry\n.

Esse jeito de agir mantém a estrutura original do arquivo, o que é importante quando a formatação é importante. Mas quando você está processando texto — provavelmente comparando valores, analisando dados ou limpando entradas — muitas vezes você quer remover esses espaços em branco extras.

Linhas de limpeza para processamento

A solução mais comum é remover os espaços em branco antes de usar cada linha:

with open("data.txt", encoding="utf-8") as file:
    for line in file:
        clean_line = line.strip()
        print(clean_line)

O método ` strip() ` tira os espaços em branco no começo e no fim, incluindo espaços, tabulações e caracteres de nova linha. Isso geralmente é o que você quer quando:

  • Comparando linhas com valores esperados
  • Convertendo strings em números
  • Criando dados estruturados a partir do conteúdo dos arquivos

Padrões comuns de espaços em branco

Dependendo do seu caso, métodos mais direcionados podem ser melhores:

  • line.strip() tira os espaços em branco das duas pontas

  • line.rstrip() tira os espaços em branco do lado direito

  • line.rstrip("\n") remove só o caractere de nova linha

Por exemplo, se a indentação importa, mas as novas linhas finais não:

clean_line = line.rstrip("\n")

Quando não descascar as linhas

É tão importante saber quando não remover espaços em branco. Se você estiver trabalhando com:

  • Texto pré-formatado
  • Arquivos de largura fixa
  • Registros em que o espaçamento é importante
  • Markdown ou trechos de código

Remover espaços em branco pode danificar a estrutura dos dados. Nesses casos, trabalhe com as linhas brutas e cuide da formatação de propósito.

Uma boa regra geral: remova as linhas quando estiver processando conteúdo; preserve os espaços em branco quando a formatação for importante.

Como acompanhar os números das linhas em Python

Quando você tá lendo arquivos linha por linha, é normal querer saber em que linha você tá. Isso é super útil pra logs, erros de validação e depuração de arquivos de entrada bagunçados.

O Python facilita isso usando a função integrada ` enumerate() `:

with open("data.txt", encoding="utf-8") as file:
    for line_number, line in enumerate(file, start=1):
        print(line_number, line.strip())

E aí, o que tá rolando:

  • O arquivo ainda mostra uma linha de cada vez.

  • enumerate() adiciona um contador ao lado de cada linha

  • start=1 corresponde à forma como os humanos contam linhas

Esse padrão é eficiente em termos de memória e funciona tão bem para arquivos grandes.

Quando os números das linhas são importantes

Acompanhar os números das linhas é especialmente útil para:

  • Registros: descobrindo onde um evento rolou
  • Validação: informando exatamente onde os dados incorretos aparecem
  • Depuração: rastreando falhas de análise
  • Feedbackdo usuário: apontando para uma linha específica em um arquivo de entrada

Como o ` enumerate() ` mantém o código limpo e legível, ele é quase sempre melhor do que gerenciar um contador manual.

Usando readline() para ler uma linha de cada vez em Python

Python também tem uma opção mais manual: readline(). Você não vai precisar disso com frequência, mas entender isso ajuda a reconhecer quando é apropriado.

O método ` readline() ` lê uma única linha cada vez que é chamado. Quando o arquivo acaba, ele devolve uma string vazia:

with open("example.txt", encoding="utf-8") as file:
    line = file.readline()
    while line:
        print(line.strip())
        line = file.readline()

Quando readline() faz sentido

readline() é útil quando a leitura precisa ser condicional ou bem controlada, como:

  • Programas interativos
  • Parando assim que uma condição for atendida
  • Misturando leitura de arquivos com lógica complexa

Por exemplo:

with open("log.txt", encoding="utf-8") as file:
    while True:
        line = file.readline()
        if not line or "ERROR" in line:
            break
        print(line.strip())

Por que geralmente não é melhor do que o loop padrão

Na maioria dos casos, isso ainda é melhor:

for line in file:
    process(line)

É mais curto, mais claro, igualmente eficiente e mais difícil de usar de forma errada. Pense em readline() como uma ferramenta especial, não como um substituto para o loop padrão.

Por que usar readlines() geralmente não é uma boa ideia para arquivos grandes

O método ` readlines() ` lê todo o arquivo na memória e retorna uma lista de linhas:

with open("example.txt", encoding="utf-8") as file:
    lines = file.readlines()

Isso funciona para arquivos pequenos, mas não é escalável.

Porque o arquivo inteiro é carregado de uma vez só:

  • O uso da memória aumenta com o tamanho do arquivo
  • Arquivos grandes podem deixar seu programa lento ou até mesmo travá-lo.
  • Os problemas geralmente só aparecem na produção.

Quando readlines() é aceitável

É razoável quando:

  • O arquivo é garantidamente pequeno.
  • Você realmente precisa de todas as linhas ao mesmo tempo.
  • O tamanho é previsível e limitado.

Caso contrário, iterar linha por linha é quase sempre a melhor opção.

Erros comuns ao ler arquivos linha por linha

A maioria dos problemas vem de alguns pequenos descuidos:

  • Esquecendo de fechar arquivos → Use with

  • Carregando arquivos inteiros sem querer → Evite read() e readlines()

  • Ignorando codificações → Especifique UTF-8 explicitamente

  • Confusão entre os modos texto e binário → Use "r" para texto e "rb" para binário

Depois que você souber disso, vai ser fácil evitar.

Melhores práticas para ler arquivos linha por linha em Python

Antes de encerrar, aqui vai uma lista rápida pra manter seu código limpo e confiável:

  • Use o objeto arquivo como um iterador por padrão
  • Remova os espaços em branco de propósito, não automaticamente
  • Evite carregar arquivos inteiros, a menos que seja necessário.
  • Lida com codificações explicitamente ao trabalhar com texto

Esses hábitos vão desde scripts rápidos até pipelines de produção.

Conclusão

Quando se trata de ler um arquivo linha por linha em Python, tem um padrão bem claro: iterar diretamente sobre o objeto do arquivo. É simples, eficiente em termos de memória e expressivo o suficiente para lidar com tudo, desde pequenos arquivos de texto até registros enormes.

O design do Python faz com que esse padrão pareça natural. Você não precisa de utilitários especiais ou lógica complexa, porque a linguagem cuida das partes difíceis pra você. A maioria dos problemas não vem do Python em si, mas de complicar demais uma tarefa que já tem uma solução simples.

Fique com a abordagem baseada em iterador, seja cuidadoso com espaços em branco e codificações, e seu código de leitura de arquivos vai continuar legível e fácil de entender.

Perguntas frequentes

Ler um arquivo linha por linha é sempre mais lento do que ler tudo de uma vez?

Não. Na verdade, para arquivos grandes, a leitura linha por linha costuma ser mais rápida no geral, pois evita pressão na memória. Carregar um arquivo inteiro na memória pode deixar seu programa lento ou até mesmo travá-lo, enquanto a iteração linha por linha mantém o uso da memória constante.

Por que o Python coloca caracteres de nova linha (\n) em cada linha?

Porque o Python mantém o arquivo exatamente como ele está no disco. As novas linhas fazem parte dos dados, não são formatação adicionada posteriormente. Isso torna a leitura de arquivos previsível e flexível — você decide quando e como limpar o texto, em vez de deixar o Python adivinhar por você.

Devo sempre usar strip() ao ler linhas?

Nem sempre. Use strip() quando estiver processando valores, comparando strings ou limpando entradas. Evite isso quando os espaços em branco tiverem significado, como em registros, texto formatado, arquivos de largura fixa ou trechos de código.

A função readline() é melhor do que for line in file?

Raramente, mas às vezes. O comando ` readline() ` faz sentido quando a leitura precisa parar de forma condicional ou interativa. Para a maioria das tarefas de processamento em lote, o loop padrão é mais claro, mais seguro e igualmente eficiente.

Pense no readline() como uma ferramenta para casos extremos, não como um substituto geral.

Qual é o maior erro que as pessoas cometem ao ler arquivos linha por linha?

Complicando demais. A maioria dos bugs vem de carregar arquivos inteiros sem necessidade, lidar mal com codificações ou adicionar contadores manuais e estado onde Python já oferece uma solução limpa.

Tópicos

Aprenda Python com o DataCamp

Programa

Desenvolvedor associado de Python

32 h
Aprenda Python para o desenvolvimento de software, desde a criação de funções até a definição de classes. Obtenha as habilidades necessárias para dar o pontapé inicial em sua carreira de desenvolvedor!
Ver detalhesRight Arrow
Iniciar curso
Ver maisRight Arrow
Relacionado
Data Skills

blog

6 práticas recomendadas de Python para um código melhor

Descubra as práticas recomendadas de codificação Python para escrever os melhores scripts Python da categoria.
Javier Canales Luna's photo

Javier Canales Luna

13 min

Tutorial

Tutorial do Python Excel: O guia definitivo

Saiba como ler e importar arquivos do Excel em Python, gravar dados nessas planilhas e encontrar os melhores pacotes para fazer isso.
Natassha Selvaraj's photo

Natassha Selvaraj

Tutorial

Tutorial sobre loops em Python

Um tutorial introdutório completo sobre loops em Python. Aprenda e pratique loops while e for, loops aninhados, as palavras-chave break e continue, a função range e muito mais!
Satyabrata Pal's photo

Satyabrata Pal

Tutorial

Tutorial sobre concatenação de strings em Python

Aprenda vários métodos para concatenar strings em Python, com exemplos para ilustrar cada técnica.
DataCamp Team's photo

DataCamp Team

Tutorial

Como comentar um bloco de código em Python

O uso de comentários é fundamental para trabalhar efetivamente com Python. Neste breve tutorial, aprenda a comentar um bloco de código em Python.
Adel Nehme's photo

Adel Nehme

Tutorial

Python New Line: Métodos para formatação de código

Descubra como usar \n para inserir quebras de linha em cadeias de caracteres e instruções print(). Use o parâmetro end para manter a saída em uma única linha. Aprimore suas habilidades de manipulação de arquivos com o os.linesep para gerenciar texto em diferentes sistemas.
Samuel Shaibu's photo

Samuel Shaibu

Ver maisVer mais