Gestione dei file

La gestione dei file è molto semplice in Python. Vediamo qualche esempio.

Aprire un file esistente o crearne uno nuovo è molto intuitivo. La chiamata open è già inclusa nello spazio standard, senza librerie da includere. Il parametro ‘w’ serve ad aprire in scrittura il file.

#apertura di un file in scrittura write
miofile = open("prova.txt", "w")

 In sola lettura è banalmente:

#apro lo stesso file ma in lettura read
altroFile = open("prova.txt", "r")

 La scrittura ha direttive altrettanto semplice. In questo caso scriviamo direttamente un record, ovvero una serie di tuple/righe di dati omogenei, qui nel classico esempio NOME;COGNOME;ETA’;SESSO, tutti campi divisi dal separatore standard “;”, seguiti da una andata a capo. Al termine delle operazioni, è sempre bene chiudere il file.

#scrivo una riga e ci metto l'andata a capo
miofile.write("Alfredo;Centinaro;36;M" +'\n')
miofile.write("Fabiola;Taraschi;35;F" +'\n')
#chiudo il file
miofile.close()

Vediamo ora qualche tecnica per stampare il contenuto dei file. Contrariamente allo standard dei file in C++, Python mette a disposizione molti più modi e funzioni. La prima, la lettura assimilando il file come un vettore, intuitivo ma non molto gradevole:

#per stampare il file posso usare la tecnica
#dei vettori ma non è molto leggibile
for riga in altroFile:
  print (riga)

Se volessimo ricominciare una nuova lettura, dobbiamo spostare il cursore del file all’inizio. Per farlo, il metodo seek

altroFile.seek(0,0) #riporta all'inizio

Il metodo migliore per leggere è usare il readline, che legge una intera riga, da stampare direttamente o prelevare i singoli valori per gestirli in altri modi mediante il metodo standard split

#questa chiamata legge una riga e si sposta
#sulla successiva pronto ad un'altra readline
#stampo ma è illegibile/scomodo
riga = altroFile.readline()
print (riga)

#della stessa variabile, tolgo i ; che sono i
#separatori con la funzione split
#split restituisce un vettore con le parti
#del record separate
[nome,cognome,eta,sesso] = riga.split(';')
print(nome)
print(cognome)
print (eta)
print (sesso)

#oppure
record = riga.split(';')
print(record[0])
print(record[1])
print (record[2])
print (record[3])

 

Ultima modifica 27 Gennaio 2022

Lascia un commento