Leggi linee specifiche da un file in Python
-
fileobject.readlines()
per leggere linee specifiche per file di piccole dimensioni -
Il cicli
for
infileobject
per leggere linee specifiche in Python -
Il modulo
linecache
per leggere le linee specifiche in Python -
enumerate
durante la lettura di linee specifiche da un file di grandi dimensioni 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.