I file in Python

27 febbraio 2013

Il concetto di file è piuttosto noto. Il fatto che la gestione dei file in Python sia implementata internamente al linguaggio (built-in), garantisce una notevole velocità e semplicità nella loro gestione. In particolare è importante poter gestire i file con istruzioni del linguaggio di programmazione, per salvare delle informazioni sul disco e renderle di conseguenza persistenti.

I file, come tutto in Python, sono oggetti e ad oggetti di tipo file afferiscono le operazioni più comuni, come aprire e chiudere un file, leggere e scrivere in sequenza byte sul medesimo file, etc. Tutto ciò vale per file di testo e file binari.

Ecco una tabella con le principali funzioni built-in per la gestione dei file:

OperazioneDescrizione
output = open('pippo.txt','w')apertura di un file in scrittura
input = open('dati','r')apertura di un file in lettura
s = input.read()lettura dell’intero contenuto del file
s = input.read(N)lettura di N bytes
s = input.readline()lettura di una riga (per files di testo)
s = input.readlines()restuisce l’intero file come lista di righe (per files di testo)
output.write(s)scrive nel file i valori passati come parametri e ritorna il numero di bytes scritti
output.writelines(L)scrive la lista L in righe nel file
output.close(L)chiusura del file

Le variabili input e output della tabella sono oggetti di tipo file. Ecco un altro semplice esempio:

>>> miofile = open('html.txt','w')       # apre il file in scrittura

>>> miofile.write('riga 1\n')             #   scrive riga 1 
7
>>> miofile.write('riga 2\n')             #   scrive riga 2
7
>>> miofile.write('riga 3\n')             #   scrive riga 3
7
>>> miofile.close()                      # chiude il file

>>> miofile = open('html.txt','r')       # apre il file in lettura
>>> miofile.readlines()                  #   legge dal file restituisce una lista di righe
['riga1\n', 'riga2\n', 'riga3\n']

La funzione open apre il file in scrittuta e ritorna un oggetto di tipo file che associamo a miofile. Utilizziamo l’istanza creata per scrivere nel file con il metodo write e lo chiudiamo con close. Poi riapriamo lo stesso file in lettura e ne stampiamo il contenuto con readlines().

Modalità di apertura di open

Olre a "w" e "r" (scrittura e lettura), che abbiamo già visto, la funzione open consente altre modalità per l’apertura dei file, che possiamo passarle come secondo parametro:

ModalitàDescrizione
"r"Apre un file di testo in lettura, equivalente a "rt", se si omette il secondo parametro di open è la modalità di default
"w"Apre un file in scrittura, e ne azzera i contenuti
"rb" e "wb"Apre un file binario in lettura o scrittura con azzeramento del contenuto
"w+" e "w+b"Aprono un file in modifica, rispettivamente testuale e binario, e consentendone l’aggiornamento, ma ne azzerano i contenuti
"r+" e "r+b"Aprono un file in modifica, rispettivamente testuale e binario, e ne consentono l’aggiornamento senza azzerare i contenuti

Dai file aperti in modalità binaria possiamo estrarre i dati come oggetti byte senza alcuna codifica.

Per sapere tutto sulle modalità di apertura dei file possiamo interrogare Python:

>>> print(open.__doc__)

Muoversi all’interno del file

Come per C o altri linguaggi evoluti anche con Python possiamo spostarci all’interno dei file, ecco le principali metodi dell’oggetto file:

MetodoDescrizione
tell()Ritorna la posizione attuale del cursore all’interno del file
seek(pos, rel)Sposta la posizione del cursore all’interno del file, con il primo parametro indichiamo il numero di byte (positivo o negativo) di cui vogliamo spostarci, il secondo parametro indica il punto di partenza ( 0=dell’inizio del file; 1=dalla posizione attuale; 2:dalla fine del file)
read(N)Legge N bytes dalla posizione corrente e sposta il cursore avanti di N posizioni

Infine per verificare lo stato del file è sufficiente stampare i dati dell’istanza corrente. Esempio:

>>> miofile
<_io.TextIOWrapper name='html.txt' mode='r' encoding='cp1252'>

Anche se sembra scontato è utile ricordare di chiudere sempre i file (close()), dopo averli utilizzati.

Tutte le lezioni

1 ... 12 13 14 ... 24

Se vuoi aggiornamenti su I file in Python inserisci la tua e-mail nel box qui sotto:
Tags:
 
X
Se vuoi aggiornamenti su I file in Python

inserisci la tua e-mail nel box qui sotto:

Ho letto e acconsento l'informativa sulla privacy

Acconsento al trattamento di cui al punto 3 dell'informativa sulla privacy