Resumo : neste tutorial, você aprende várias maneiras de ler arquivos de texto em Python.
DR
O seguinte mostra como ler todos os textos do readme.txt
arquivo em uma string:
with open('readme.txt') as f:
lines = f.readlines()
Linguagem de código: Python ( python )
Etapas para ler um arquivo de texto em Python
Para ler um arquivo de texto em Python, siga estas etapas:
- Primeiro, abra um arquivo de texto para leitura usando a
open()
função. - Segundo, leia o texto do arquivo de texto usando o método file
read()
,readline()
oureadlines()
do objeto file. - Terceiro, feche o arquivo usando o
close()
método file.
1) função abrir()
A open()
função tem muitos parâmetros, mas você se concentrará nos dois primeiros:
open(path_to_file, mode)
Linguagem de código: Python ( python )
O path_to_file
parâmetro especifica o caminho para o arquivo de texto.
Se o programa e o arquivo estiverem na mesma pasta, você precisará especificar apenas o nome do arquivo. Caso contrário, você precisará incluir o caminho para o arquivo, bem como o nome do arquivo.
Para especificar o caminho para o arquivo, use a barra ( '/'
), mesmo se estiver trabalhando no Windows.
Por exemplo, se o arquivo readme.txt
estiver armazenado na sample
pasta como o programa, você precisará especificar o caminho para o arquivo comoc:/sample/readme.txt
O mode
é um parâmetro opcional. É uma string que especifica o modo em que você deseja abrir o arquivo. A tabela a seguir mostra os modos disponíveis para abrir um arquivo de texto:
Modo | Descrição |
---|---|
'r' |
Abrir arquivo de texto para leitura de texto |
'w' |
Abra um arquivo de texto para escrever texto |
'a' |
Abra um arquivo de texto para anexar texto |
Por exemplo, para abrir um arquivo cujo nome está the-zen-of-python.txt
armazenado na mesma pasta do programa, você usa o seguinte código:
f = open('the-zen-of-python.txt','r')
Linguagem de código: Python ( python )
A open()
função retorna um objeto de arquivo que você usará para ler texto de um arquivo de texto.
2) Métodos de leitura de texto
O objeto file fornece três métodos para ler texto de um arquivo de texto:
read(size)
– lê algum conteúdo de um arquivo com base no tamanho opcional e retorna o conteúdo como uma string. Se você omitir o tamanho, oread()
método lê de onde parou até o final do arquivo. Se o final de um arquivo for atingido, oread()
método retornará uma string vazia.readline()
– lê uma única linha de um arquivo de texto e retorna a linha como uma string. Se o final de um arquivo for atingido, retornaráreadline()
uma string vazia.readlines()
– lê todas as linhas do arquivo de texto em uma lista de strings. Este método é útil se você tiver um arquivo pequeno e quiser manipular todo o texto desse arquivo.
3) método fechar()
O arquivo que você abre permanecerá aberto até que você o feche usando o close()
método.
É importante fechar o arquivo que não está mais em uso pelos seguintes motivos:
- Primeiro, quando você abre um arquivo em seu script, o sistema de arquivos geralmente o bloqueia para que nenhum outro programa ou script possa usá-lo até que você o feche.
- Segundo, seu sistema de arquivos possui um número limitado de descritores de arquivos que você pode criar antes que eles fiquem sem eles. Embora esse número possa ser alto, é possível abrir muitos arquivos e esgotar os recursos do sistema de arquivos.
- Terceiro, deixar muitos arquivos abertos pode levar a condições de corrida que ocorrem quando vários processos tentam modificar um arquivo ao mesmo tempo e podem causar todos os tipos de comportamentos inesperados.
A seguir mostramos como chamar o close()
método para fechar o arquivo:
f.close()
Linguagem de código: Python ( python )
Para fechar o arquivo automaticamente sem chamar o close()
método, você usa a with
instrução assim:
with open(path_to_file) as f:
contents = f.readlines()
Linguagem de código: Python ( python )
Na prática, você usará a with
instrução para fechar o arquivo automaticamente.
Lendo exemplos de arquivos de texto
Usaremos o arquivo-zen-of-python.txt para a demonstração.
O exemplo a seguir ilustra como usar o read()
método para ler todo o conteúdo do the-zen-of-python.txt
arquivo em uma string:
with open('the-zen-of-python.txt') as f:
contents = f.read()
print(contents)
Linguagem de código: Python ( python )
Saída:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
...
Linguagem de código: Python ( python )
O exemplo a seguir usa o readlines()
método para ler o arquivo de texto e retorna o conteúdo do arquivo como uma lista de strings:
with open('the-zen-of-python.txt') as f:
[print(line) for line in f.readlines()]
Linguagem de código: Python ( python )
Saída:
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
...
Linguagem de código: Python ( python )
O motivo pelo qual você vê uma linha em branco após cada linha de um arquivo é que cada linha do arquivo de texto possui um caractere de nova linha (\n). Para remover a linha em branco, você pode usar o strip()
método. Por exemplo:
with open('the-zen-of-python.txt') as f:
[print(line.strip()) for line in f.readlines()]
Linguagem de código: Python ( python )
O exemplo a seguir mostra como usar o readline()
para ler o arquivo de texto linha por linha:
with open('the-zen-of-python.txt') as f:
while True:
line = f.readline()
if not line:
break
print(line.strip())
Linguagem de código: Python ( python )
Saída:
Explicit is better than implicit.
Complex is better than complicated.
Flat is better than nested.
...
Linguagem de código: Python ( python )
Uma maneira mais concisa de ler um arquivo de texto linha por linha
A open()
função retorna um objeto de arquivo que é um objeto iterável . Portanto, você pode usar um for
loop para iterar nas linhas de um arquivo de texto da seguinte maneira:
with open('the-zen-of-python.txt') as f:
for line in f:
print(line.strip())
Linguagem de código: Python ( python )
Esta é uma maneira mais concisa de ler um arquivo de texto linha por linha.
Leia arquivos de texto UTF-8
O código dos exemplos anteriores funciona bem com arquivos de texto ASCII. No entanto, se você estiver lidando com outros idiomas, como japonês, chinês e coreano, o arquivo de texto não será um simples arquivo de texto ASCII. E provavelmente é um arquivo UTF-8 que usa mais do que apenas caracteres de texto ASCII padrão.
Para abrir um arquivo de texto UTF-8, você precisa passar encoding='utf-8'
para a open()
função para instruí-la a esperar caracteres UTF-8 do arquivo.
Para a demonstração, você usará o seguinte quotes.txt
arquivo que contém algumas citações em japonês.
O seguinte mostra como percorrer o quotes.txt
arquivo:
with open('quotes.txt', encoding='utf8') as f:
for line in f:
print(line.strip())
Linguagem de código: Python ( python )
Saída:
Resumo
- Use a
open()
função com o'r'
modo para abrir um arquivo de texto para leitura. - Use o método
read()
,readline()
oureadlines()
para ler um arquivo de texto. - Sempre feche um arquivo após concluir a leitura usando o
close()
método ou awith
instrução. - Use o
encoding='utf-8'
para ler o arquivo de texto UTF-8.