Ler Dados de um Arquivo
Agora que criamos e escrevemos no book.txt, vamos aprender a ler seu conteúdo. Python oferece vários métodos para ler arquivos. Exploraremos os mais comuns.
Continuaremos trabalhando com o script file_io.py. Você adicionará código para ler o arquivo que acabou de criar.
O Método read()
O método read() lê o conteúdo inteiro de um arquivo e o retorna como uma única string.
Adicione o seguinte código ao final do seu script file_io.py. Isso fará com que o script primeiro escreva no arquivo e, em seguida, o leia novamente e imprima seu conteúdo.
## O código de escrita da etapa anterior deve estar acima disto
print("\n--- Lendo o arquivo inteiro com read() ---")
with open("book.txt", "r") as f:
content = f.read()
print(content)
Salve o arquivo e execute-o a partir do terminal:
python ~/project/file_io.py
A saída agora incluirá o conteúdo de book.txt impresso no console:
--- Lendo o arquivo inteiro com read() ---
Bed before bright moonlight,
Suspected to be frost on the ground.
Head held high, gazing at the bright moon,
Head bowed low, thinking of my homeland.
Iterando Sobre Linhas
Uma maneira mais eficiente em termos de memória para ler um arquivo, especialmente um grande, é processá-lo linha por linha. Você pode fazer isso iterando diretamente sobre o objeto arquivo em um loop for.
Agora, adicione este próximo bloco de código ao file_io.py:
print("\n--- Lendo arquivo linha por linha ---")
with open("book.txt", "r") as f:
for line in f:
print(line, end='')
Aqui, end='' na função print() evita que ela adicione uma nova linha extra, já que cada line lida do arquivo já termina com um caractere de nova linha (\n).
Salve e execute o script novamente:
python ~/project/file_io.py
A saída para esta seção será idêntica à saída do método read(), mas o processo subjacente é diferente, lendo uma linha de cada vez.
O Método readlines()
O método readlines() lê todas as linhas de um arquivo e as retorna como uma lista de strings.
Finalmente, adicione este último bloco de código ao file_io.py:
print("\n\n--- Lendo todas as linhas com readlines() ---")
with open("book.txt", "r") as f:
all_lines = f.readlines()
print(all_lines)
Salve e execute o script pela última vez:
python ~/project/file_io.py
A saída para esta seção será uma lista Python, onde cada elemento é uma string representando uma linha do arquivo:
--- Lendo todas as linhas com readlines() ---
['Bed before bright moonlight,\n', 'Suspected to be frost on the ground.\n', 'Head held high, gazing at the bright moon,\n', 'Head bowed low, thinking of my homeland.']
Você praticou agora os métodos fundamentais para escrever e ler arquivos em Python.