2.1 Lendo o arquivo inteiro
Em Python, há várias maneiras de ler arquivos de texto. Cada um desses métodos tem suas vantagens e é adequado para diferentes situações. As principais formas de ler arquivos de texto incluem: ler todo o conteúdo de uma vez, ler linha por linha, ler um número específico de caracteres e outras.
O método read()
lê todo o conteúdo do arquivo em uma única string.
file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()
Essa é uma maneira muito simples de ler um arquivo — uma chamada de método, e todo o conteúdo do arquivo está em uma string. No entanto, há desvantagens — se o arquivo contiver, por exemplo, 200 MB de logs, ele será lido lentamente e a memória do seu aplicativo será rapidamente consumida.
2.2 Lendo todas as linhas de um arquivo
Há uma alternativa ao método read()
— o método readlines()
. Ele também lê o arquivo inteiro na memória, mas o retorna como uma lista de strings — cada linha do arquivo será uma linha separada na lista.
O método readlines()
lê todas as linhas do arquivo e as retorna como uma lista de strings.
file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
print(line.strip()) # strip() remove espaços e caracteres de nova linha extras
file.close()
Essa abordagem pode ser conveniente se você souber de antemão que precisa processar o conteúdo do arquivo linha por linha. A desvantagem é que esse método pode consumir muita memória para arquivos muito grandes, já que todas as linhas são carregadas na memória.
2.3 Iterando sobre as linhas de um arquivo
O objeto file
tem um iterador embutido, então você pode percorrer seu conteúdo usando um loop for
. Isso permite ler o arquivo linha por linha, sem carregar o arquivo inteiro na memória.
Exemplo:
file = open('example.txt', 'r')
for line in file:
print(line.strip())
file.close()
Este método é mais eficiente em termos de memória para arquivos grandes, pois as linhas são lidas uma por uma. No entanto, pode ser mais complicado de processar se você precisar voltar para a linha anterior ou alterar a ordem de leitura.
Vamos comparar esse método e o anterior:
Uso do iterador | Uso da função readlines() |
---|---|
|
|
Esse método é mais simples e rápido. No entanto, quando você trabalha em projetos reais, às vezes será mais rápido carregar todos os dados na memória de uma vez e trabalhar com eles lá.
Os métodos readline()
e readlines()
são usados para ler linhas de um arquivo, mas funcionam de maneiras diferentes. readline()
lê uma linha de cada vez, permitindo controlar o processo de leitura e não carregar todo o arquivo na memória. Isso é conveniente quando você precisa processar o arquivo linha por linha ou quando o arquivo é grande demais para ser carregado na memória por completo.
readlines()
, por outro lado, lê todas as linhas do arquivo de uma vez e as retorna como uma lista. Este método é conveniente se você precisa obter rapidamente todas as linhas do arquivo para processamento posterior. No entanto, ele consome mais memória, especialmente para arquivos grandes, pois o arquivo inteiro é carregado na memória.
Dependendo da tarefa, readline()
pode ser preferível se a economia de memória e o controle sobre o processo de leitura forem importantes, enquanto readlines()
é útil quando você precisa obter imediatamente todas as linhas do arquivo para processamento.
2.4 Lendo parte de um arquivo
Se o arquivo é muito grande, você pode lê-lo em partes. No método read(n)
, você pode passar o parâmetro n
— a quantidade de caracteres a ser lida. Se o arquivo tiver menos caracteres do que n
, o método read()
simplesmente lerá até o final do arquivo.
Exemplo:
file = open('example.txt', 'r')
content = file.read(10) # Lê os primeiros 10 caracteres
print(content)
file.close()
Isso é útil para ler grandes arquivos em partes ou para processar blocos de dados fixos. No entanto, esse método ignora a divisão do arquivo em linhas — as linhas podem ser divididas no meio.
2.5 Lendo o arquivo linha por linha
Se por algum motivo você não quiser usar o iterador, pode ler o arquivo linha por linha manualmente. Para isso, o objeto file
tem o método readline()
. Não confunda com readlines()
.
O método readline()
lê uma linha do arquivo de cada vez.
Exemplo:
file = open('example.txt', 'r')
line = file.readline()
while line:
print(line.strip())
line = file.readline()
file.close()
Neste exemplo, lemos o conteúdo do arquivo linha por linha, até que a linha lida seja vazia.
GO TO FULL VERSION