Leggi linee specifiche da un file in Python

Heys 30 gennaio 2023
  1. fileobject.readlines() per leggere linee specifiche per file di piccole dimensioni
  2. Il cicli for in fileobject per leggere linee specifiche in Python
  3. Il modulo linecache per leggere le linee specifiche in Python
  4. enumerate durante la lettura di linee specifiche da un file di grandi dimensioni in Python
Leggi linee specifiche da un file in Python

Un modo comune per leggere un file in Python è leggerlo interamente e quindi elaborare la riga specifica. Leggere un file in Python è veloce; per esempio, ci vogliono circa 0,67 secondi per scrivere un file da 100MiB. Ma se la dimensione del file supera i 100 MB, causerebbe problemi di memoria quando viene letto in memoria.

Python ha 3 metodi incorporati per leggere le linee specifiche da un file, come introdotto nelle sezioni successive.

fileobject.readlines() per leggere linee specifiche per file di piccole dimensioni

fileobject.readlines() legge tutto il contenuto del file in memoria. Potrebbe utilizzare la suddivisione della lista per leggere le linee specifiche.

Se abbiamo solo bisogno di leggere la riga 10,

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

Se dobbiamo leggere linee da 10 a 100,

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

Il cicli for in fileobject per leggere linee specifiche in Python

for line in fileobject è anche una soluzione rapida per file di piccole dimensioni.

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)

Il modulo linecache per leggere le linee specifiche in Python

Il modulo linecache può essere usato per leggere molti file, possibilmente ripetutamente o per estrarre molte linee:

import linecache

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

Il metodo delle stringhe strip() restituisce una stringa che rimuove gli spazi bianchi da entrambe le estremità.

Il modulo linecache consente di ottenere qualsiasi riga da un file sorgente python mentre si utilizza la cache per l’ottimizzazione interna, che è una pratica comune per leggere molte linee da un singolo file. Il modulo traceback lo usa per recuperare le linee sorgente contenute nel traceback formattato.

enumerate durante la lettura di linee specifiche da un file di grandi dimensioni in Python

Durante la lettura di file, uno di grandi dimensioni può causare problemi come non si adatta alla memoria. In questo caso, potremmo usare enumerate():

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

Nota che per la n esima riga, i = n-1.

La funzione enumerate() è usata per combinare un oggetto dati iterabile (come una lista, una tupla o una stringa) in una sequenza di indice. Elenca i dati e gli indici dei dati simultaneamente, che saranno usati nel cicli for come nell’esempio precedente.

Articolo correlato - Python File