Aprire un file e leggere il contenuto di un file è una delle cose comuni che si fanno quando si fanno analisi di dati.
In questo tutorial, vedremo 3 esempi di lettura di un file di testo in Python 3.
Un modo semplice per leggere un file di testo e analizzare ogni riga è usare l’istruzione python “readlines” su un oggetto file.
Come leggere tutte le righe di un file in una volta sola? Usate readlines()
Se volete leggere tutte le righe di un file allo stesso tempo, la funzione readlines() di Python fa per voi. La funzione readlines di Python legge tutto il contenuto del file di testo e lo dispone in una lista di righe. Ecco un esempio di come usare readlines di Python.
Prima apriamo il file usando la funzione open() in modalità di sola lettura. E usiamo il gestore di file dall’apertura del file per leggere tutte le linee usando readlines() come segue.
# Open the file with read only permitf = open('my_text_file.txt', "r")# use readlines to read all lines in the file# The variable "lines" is a list containing all lines in the filelines = f.readlines()# close the file after reading the lines.f.close()
Possiamo anche leggere tutte le linee di un file in una volta sola in un altro modo. Fondamentalmente, useremmo l’oggetto file handler dopo aver aperto il file come argomento alla funzione list() per ottenere tutte le linee come lista.
Un altro modo per leggere le linee in una volta sola è semplicemente usare
# read all lines at oncelines = list(f)
Nota che l’ultimo carattere di ogni linea è il carattere newline.
Poi puoi andare sulla lista delle “linee” per analizzare ogni linea. Come si può notare immediatamente, “readlines” o “list(f) funziona benissimo per un piccolo file di testo. Tuttavia, non è efficiente in termini di memoria se i vostri file di testo sono molto grandi. Un modo migliore per leggere un file di testo che sia memory-friendly è quello di leggere il file riga per riga, cioè una riga alla volta.
Core Python ha (almeno) due modi per leggere facilmente un file di testo riga per riga.
Come leggere un file di testo riga per riga usando l’istruzione While in Python?
Ecco il modo per leggere un file di testo una riga alla volta usando l’istruzione “While” e la funzione readline di python. Poiché leggiamo una riga alla volta con readline, possiamo facilmente gestire file di grandi dimensioni senza preoccuparci dei problemi di memoria.
# Open the file with read only permitf = open('my_text_file.txt')# use readline() to read the first line line = f.readline()# use the read line to read further.# If the file is not empty keep reading one line# at a time, till the file is emptywhile line: # in python 2+ # print line # in python 3 print is a builtin function, so print(line) # use realine() to read next line line = f.readline()f.close()
Un’altra variazione della lettura di un file con l’istruzione while e readline è la seguente. Qui il while verifica la presenza di un booleano e legge riga per riga fino alla fine del file e la riga sarà vuota.
# file handle fhfh = open('my_text_file.txt')while True: # read line line = fh.readline() # in python 2, print line # in python 3 print(line) # check if line is not empty if not line: breakfh.close()
Come leggere un file di testo riga per riga usando un iteratore in Python?
Si può anche usare un iteratore per leggere un file di testo una riga alla volta. Ecco come fare.
fh = open('my_text_file.txt')for line in fh: # in python 2 # print line # in python 3 print(line)fh.close()
Ricordarsi di chiudere il gestore di file (“fh”) con l’istruzione “fh.close()” può essere inizialmente difficile. Si può controllare se un gestore di file è chiuso con
# check if the file file handler is closed or not>fh.closed# true if the file handler is closed True
Si possono aprire file in modo molto più semplice usando l’istruzione “with” in Python, senza dover chiudere il gestore di file. L’operatore “with” crea un gestore di contesto e chiuderà automaticamente il file per voi quando avrete finito.
Vedete qui come usare l’istruzione “with” per aprire un file.
- L’istruzione “with” in Python per aprire un file
Volete leggere un file di testo riga per riga e saltare le righe di commento? controlla questo post
- 3 modi per leggere un file e saltare le linee di commento iniziali in Python
Vuoi leggere/caricare dati numerici in un file di testo, controlla questo post
- Come leggere dati numerici/file in Python con numpy?
Hai dati in un file di testo csv o tab limited e vuoi leggerli in Python? L’opzione migliore è usare il pacchetto pandas di Python. Ecco come caricare file di dati in Python con Pandas,
- 7 suggerimenti per leggere un file CSV come frame di dati Pandas