03python BSIDBMS 1
03python BSIDBMS 1
I/O su File
Sintassi:
nomeVariabileFile = open(nomefile, modalità)
3
Sistemi informativi e DBMS
FILE: open
La funzione open restituisce un tipo di dato chiamato wrapper
(involucro). Il wrapper permette di manipolare il file con le
istruzioni del linguaggio python, evitando di intervenire
direttamente sul processo di lettura e scrittura dei dati registrati.
>>> type(open("visitatiori2019.txt","r"))
<class '_io.TextIOWrapper'>
Esempio:
fileDaScrivere=open("prove.txt","w")
5
Sistemi informativi e DBMS
FILE: ModalitÀ Write
Per scrivere una linea sul file utilizzo il metodo write dell’oggetto
wrapper del file. Il metodo write prende in ingresso una stringa.
Restituisce il numero di caratteri da scrivere sul file.
Esempio.
>>> fileDaScrivere.write("ciao\n")
4
Il carattere speciale “\n” indica che la linea è finita (End Of Line) e
che il prossimo write verrà inserito sotto.
Senza il carattere \n, un nuovo write verrebbe affiancato al
precedente.
6
Sistemi informativi e DBMS
FILE: ModalitÀ Write
Attenzione:
Il metodo write non modifica istantaneamente il file. Le modifiche
restano in attesa di essere effettuate fino a che non eseguo il
metodo flush.
>>> fileDaScrivere.flush()
Risultato:
Esempio:
prove.txt
>>> fileDaScrivere=open("prove.txt","w")
>>> fileDaScrivere.write("ciao") ciaoprova
>>> fileDaScrivere.write("prova\n") #a capo Fine...
>>> fileDaScrivere.write("Fine…")
>>> fileDaScrivere.flush()
7
Sistemi informativi e DBMS
FILE: Chiusura
Una volta concluse le operazioni sul file occorre chiuderlo.
Il metodo close chiude il file eseguendo le ultime modifiche in
attesa. Chiudere un file significa disabilitare le operazioni di
lettura e scrittura su di esso.
Esempio:
>>> fileDaScrivere.close()
>>> fileDaScrivere.write("ciao") #provo a modificarlo
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: I/O operation on closed file.
8
Sistemi informativi e DBMS
current work directory
Dove stiamo scrivendo? Possiamo chiedere all’interprete il
percorso della directory in cui vengono creati i nuovi file e dalla
quale quale verranno letti file esistenti.
Si può utilizzare la funzione getcwd()che fa parte di una libreria
del linguaggio chiamata os. Una libreria è un insieme di nomi di
funzioni o di variabili raggruppate per scopo.
La libreria os riguarda il sistema operativo. Infatti la gestione delle
cartelle (il filesistem) è una delle responsabilità del sistema
operativo .
Un altro esempio di libreria è la libreria math che contiene funzioni
e variabili matematiche (sin, cos, pi).
9
Sistemi informativi e DBMS
current work directory
Sintassi:
All’inizio del programma (o in qualunque momento se uso la console)
eseguo l’import della funzione getcwd dalla libreria os.
10
Sistemi informativi e DBMS
File: modalitÀ read
Per leggere il contenuto di un file si usa la modalità lettura “r”.
fileInLettura = open("prove.txt","r")
11
Sistemi informativi e DBMS
File: modalitÀ read
Esempio: prove.txt
fileInLettura = open("prove.txt","r") ciaoprova
unaLinea = fileInLettura.readline() Fine...
secondalinea = fileInLettura.readline()
print(secondalinea)
Apparirà a video:
Fine...
12
Sistemi informativi e DBMS
File: modalitÀ read
Raggiunta la fine del file readline() restituisce la stringa vuota.
Esempio:
fileInLettura = open("prove.txt","r")
linea = True
testo = "" #voglio mettere qui dentro il contenuto del file.
while linea:
linea = fileInLettura.readline()
testo += linea
print(testo)
15
Sistemi informativi e DBMS
File: modalitÀ Append
La modalità "a" append è una modalità di scrittura che apre un
file esistente. Il metodo write usato su un file in modalità
append aggiungerà una linea alla fine del file.
Esempio: prove.txt
fileInAppend = open("prove.txt","a") ciaoprova
fileInAppend.write("Nuovi elementi\n") Fine…
fileInAppend.flush() Nuovi elementi
Linea aggiunta
16
Sistemi informativi e DBMS
File: modalitÀ r+
La modalità "r+" read-write è una modalità di lettura e scrittura
che apre un file esistente.
17
Sistemi informativi e DBMS
File: modalitÀ r+
Esempio:
fileInRW = open("prove.txt","r+")
fileInRW.seek(0)
fileInRW.write("Modifica")
fileInRW.flush()
prove.txt
Modificaa
Fine…
Nuovi elementi
Ha sovrascritto i
caratteri
18
Sistemi informativi e DBMS
Costrutto with - as
Il costrutto with - as permette di semplificare e di incapsulare
le operazioni di l’apertura, di elaborazione e di chiusura di un file.
Sintassi:
with open("nomefile.txt",modalità) as nomeWrapper:
#blocco di Operazioni sul file
19
Sistemi informativi e DBMS
Costrutto with - as
Esempio; modalità lettura:
20
Sistemi informativi e DBMS
Costrutto with - as
Esempio; modalità srittura:
21
Sistemi informativi e DBMS
File: readlines
Dato un file aperto in modalità r o r+ è possibile estrarre tutte
le sue linee in una sola volta.
22
Sistemi informativi e DBMS