Como ler linhas específicas a partir de um arquivo em Python
-
fileobject.readlines()
para ler as linhas específicas de um arquivo de tamanho pequeno -
Loop
for
emfileobject
para ler linhas específicas em Python -
Módulo
linecache
para ler as linhas específicas em Python - 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
.