CodeGym /Corsi /Python SELF IT /Lettura dei dati da un file

Lettura dei dati da un file

Python SELF IT
Livello 21 , Lezione 1
Disponibile

2.1 Lettura dell'intero file

In Python ci sono diversi modi per leggere i file di testo. Ognuno di questi metodi ha i propri vantaggi ed è adatto a situazioni diverse. I principali modi per leggere i file di testo sono: lettura dell'intero contenuto, lettura riga per riga, lettura specificando il numero di caratteri e altri.

Il metodo read() legge l'intero contenuto del file in una sola stringa.


file = open('example.txt', 'r')
content = file.read()
print(content)
file.close()

Questo è un modo molto semplice per leggere un file: una chiamata di metodo, e tutto il contenuto del file è nella tua stringa. Ma ci sono anche degli svantaggi: se il file contiene, ad esempio, 200 MB di log, verrà letto lentamente e la memoria della tua applicazione verrà consumata rapidamente.

2.2 Lettura di tutte le righe del file

C'è un'alternativa al metodo read(): è il metodo readlines(). Anche questo legge l'intero file in memoria, ma lo restituisce non come una singola grande stringa, ma come una lista di stringhe: ogni riga del file sarà una propria stringa nella lista.

Il metodo readlines() legge tutte le righe del file e le restituisce sotto forma di lista di stringhe.


file = open('example.txt', 'r')
lines = file.readlines()
for line in lines:
    print(line.strip())  # strip() rimuove gli spazi indesiderati e i caratteri di nuova riga
file.close()

Questo approccio può essere conveniente se sai in anticipo che devi elaborare il contenuto del file riga per riga. Gli svantaggi sono che questo metodo può consumare molta memoria per file molto grandi, poiché tutte le righe vengono caricate in memoria.

2.3 Iterazione sulle righe del file

L'oggetto file ha un iteratore incorporato, quindi è possibile scorrere il suo contenuto utilizzando un ciclo for. Questo consente di leggere il file riga per riga senza caricare l'intero file in memoria.

Esempio:


file = open('example.txt', 'r')
for line in file:
    print(line.strip())  
file.close()

Questo metodo è più efficiente dal punto di vista della memoria per i file grandi, poiché le righe vengono lette una alla volta. Tuttavia, può essere più difficile da gestire se devi tornare alla riga precedente o cambiare l'ordine di lettura.

Confrontiamo ancora una volta questo approccio con il precedente:

Uso dell'iteratore Uso della funzione readlines()

file = open('example.txt', 'r')

for line in file:
    print(line.strip())  
                            
file.close()
                

file = open('example.txt', 'r')
            
lines = file.readlines()
for line in lines:
    print(line.strip())  
                        
file.close()
                

Questo modo è più semplice e veloce. Tuttavia, quando lavori con progetti reali, a volte sarà più veloce caricare tutti i dati in memoria immediatamente e lavorarci lì.

I metodi readline() e readlines() vengono utilizzati per leggere le righe da un file, ma funzionano in modo diverso. readline() legge una riga alla volta, il che consente di controllare il processo di lettura e di non caricare l'intero file in memoria. È utile quando devi elaborare il file riga per riga o quando il file è troppo grande per essere caricato completamente in memoria.

readlines(), al contrario, legge tutte le righe del file in una volta e le restituisce sotto forma di lista. Questo metodo è conveniente se hai bisogno di ottenere rapidamente tutte le righe del file per un'ulteriore elaborazione. Tuttavia, consuma più memoria, soprattutto per file grandi, poiché l'intero file viene caricato in memoria.

A seconda del compito, readline() può essere preferibile se è importante risparmiare memoria e avere il controllo sul processo di lettura, mentre readlines() è conveniente quando è necessario ottenere immediatamente tutte le righe del file per l'elaborazione.

2.4 Lettura di una parte del file

Se il file è troppo grande, puoi leggerlo a pezzi. Al metodo read(n) puoi passare il parametro n che indica il numero di caratteri da leggere. Se nel file ci sono meno caratteri di n, il metodo read() leggerà semplicemente fino alla fine del file.

Esempio:


file = open('example.txt', 'r')
content = file.read(10)  # Legge i primi 10 caratteri
print(content)
file.close()

Questo è utile per leggere grandi file a pezzi o per elaborare blocchi di dati fissi. Ma questo approccio ignora la suddivisione del file in righe: le righe possono essere interrotte a metà.

2.5 Lettura del file riga per riga

Se per qualche motivo non vuoi usare l'iteratore, puoi leggere il file riga per riga manualmente. A tal fine, l'oggetto file ha il metodo readline(). Da non confondere con readlines().

Il metodo readline() legge una riga dal file alla volta.

Esempio:


file = open('example.txt', 'r')
line = file.readline()
while line:
    print(line.strip())
    line = file.readline()
file.close()

In questo esempio leggiamo il contenuto del file riga per riga finché la riga letta non è vuota.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION