Como ler linhas específicas a partir de um arquivo em Python

  1. fileobject.readlines() para ler as linhas específicas de um arquivo de tamanho pequeno
  2. Loop for em fileobject para ler linhas específicas em Python
  3. Módulo linecache para ler as linhas específicas em Python
  4. Enumerar durante a leitura de linhas específicas de um grande arquivo em Python

Uma maneira comum de ler um arquivo em Python é lê-lo completamente e depois processar a linha específica. A leitura de um arquivo em Python é rápida, por exemplo, leva aproximadamente 0,67 segundos para escrever um arquivo de 100MiB. Mas se o tamanho do arquivo exceder 100 MB, isso causará problemas de memória quando for lido na memória.

Python tem 3 métodos embutidos para ler as linhas específicas de um arquivo, como introduzido nas próximas seções.

fileobject.readlines() para ler as linhas específicas de um arquivo de tamanho pequeno

fileobject.readlines() lê todo o conteúdo do arquivo para a memória. Poderia utilizar o corte da lista para ler as linhas específicas.

Se precisarmos apenas ler a linha 10,

with open("file.txt") as f:
    data = f.readlines()[10]
print(data)

Se precisarmos ler linhas de 10 a 100,

with open("file.txt") as f:
    data = f.readlines()[10:100]
print(data)

Loop for em fileobject para ler linhas específicas em Python

for line in fileobject é também uma solução rápida para arquivos pequenos.

lines =[10, 100]
data = []
i = 0

with open("file.txt", "r+") as f:
    for line in f:
        if i in lines:
            data.append(line.strip)
            
        i = i + 1

print(data)

Módulo linecache para ler as linhas específicas em Python

linecache para leitura de muitos arquivos, possível repetidamente ou extraindo muitas linhas:

import linecache
data = linecache.getline('file.txt', 10).strip()

O método de string strip() devolve uma string que retira espaços brancos de ambas as extremidades.

O módulo linecache permite obter qualquer linha de um arquivo fonte python enquanto utiliza o cache para otimizar internamente, o que é uma prática comum de leitura de muitas linhas de um único arquivo. O módulo de traceback o utiliza para recuperar as linhas de origem contidas no traceback formatado.

Enumerar durante a leitura de linhas específicas de um grande arquivo em Python

Ao ler arquivos, um arquivo grande pode causar problemas como o de não caber na memória. Neste caso, podemos utilizar ʻenumerate():

with open("file.txt") as f:
    for i, line in enumerate(f):
        pass  # process line i

Note que para a linha n-th, i = n-1.

A função ʻenumerate() é utilizada para combinar um objeto de dados transponível (como uma lista, tuple ou string) em uma seqüência de índices, listando dados e subscritos de dados ao mesmo tempo, que é geralmente utilizada no loop for.

Artigo relacionado - Python File

  • Obter extensão de ficheiros em Python
  • Como verificar se um arquivo existe em Python