Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni22 pagine

03python BSIDBMS 1

Caricato da

Antonio
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Il 0% ha trovato utile questo documento (0 voti)
6 visualizzazioni22 pagine

03python BSIDBMS 1

Caricato da

Antonio
Copyright
© © All Rights Reserved
Per noi i diritti sui contenuti sono una cosa seria. Se sospetti che questo contenuto sia tuo, rivendicalo qui.
Formati disponibili
Scarica in formato PDF, TXT o leggi online su Scribd
Sei sulla pagina 1/ 22

Linguaggio Python

I/O su File

Sistemi informativi e DBMS


Corso di Laurea Magistrale in
Management e Monitoraggio del Turismo Sostenibile

Prof. Andrea Pinna


AA 2020/2021
FILE
Python permette di creare ed aprire file di testo sui quali scrivere
e leggere dati, sotto forma di stringhe. Un file è composto da
linee ed ogni linea termina con il carattere speciale End of Line.

I file si possono manipolare in quattro modalità:


'r' lettura: un file in modalità lettura si può leggere ma non
modificare.
'w' scrittura: un file in modalità scrittura si può modificare ma non
leggere. Il file viene considerato vuoto.
'a' aggiunta (append): un file in modalità append può essere scritto
e i nuovi dati vengono scritti alla fine del file.
'r+' lettura e scrittura: modalità speciale che permette di leggere e
scrivere sul file.
2
Sistemi informativi e DBMS
FILE: open
La funzione di built-in open permette di aprire un file in una
delle quattro modalità. Ha come argomenti il nome del file (di
tipo stringa) e una modalità (di tipo stringa). Restituisce un
riferimento alla locazione di memoria in cui è caricato il file.

Sintassi:
nomeVariabileFile = open(nomefile, modalità)

Esempio: apro il file visitatori2019.txt in modalità lettura


fileVisitatori = open("visitatori2019.txt","r")

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.

Nello specifico, chiamando type sul risultato di open ottengo:

>>> type(open("visitatiori2019.txt","r"))
<class '_io.TextIOWrapper'>

Il wrapper del file è un oggetto nel quale, oltre al riferimento al


file, è disponibile un insieme di metodi.
4
Sistemi informativi e DBMS
FILE: ModalitÀ Write
Per creare un nuovo file (o sovrascrivere uno esistente) si usa la
modalità write ("w")

Esempio:
fileDaScrivere=open("prove.txt","w")

Ora possiamo agire sulla variabile fileDaScrivere per scrivere


sul nostro file prove.txt.

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.

from os import getcwd

Significa: “dalla libreria os importa il nome getcwd in essa definito”

Una volta importata, posso usare la funzione getcwd che non ha


argomenti e restituisce una stringa. Esempio:
>>> print(getcwd())
/home/andrea

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")

Per leggere le linee di un file si usa il metodo readline() che


non ha argomenti e restituisce una stringa uguale ad una delle
riga del file. In particolare, la prima volta che si esegue
readline restituisce la prima linea, la seconda volta restituisce
la seconda linea, e così via.

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)

Dato che la stringa vuota viene valutata come False posso


fermare il ciclo quando l’ultima linea letta è vuota.
13
Sistemi informativi e DBMS
File: Seek e tell
Per decidere da quale posizione leggere con il prossimo readline
si deve utilizzare il metodo seek che prende in ingresso un numero
intero positivo e posiziona il cursore nella posizione desiderata.
Esempio:
fileInLettura.seek(0)
sposta il cursone all’inizio della prima linea.
fileInLettura.seek(4)
sposta il cursone dopo il quarto carattere.
Per conoscere la posizione del cursore posso usare il metodo tell
senza argomenti
fileInLettura.tell()
14
Sistemi informativi e DBMS
File: Seek
Seek in modalità 2: permette di spostare il cursore in una
posizione partendo dalla fine del file. Per ottenere questa
modalità di posizionamento è necessario inserire un secondo
argomento di valore 2.
La fine del file si raggiunge con questa sintassi:
fileAperto.seek(0,2)

Raggiunta la fine del file, usando tell posso conoscere il numero


di caratteri del file.
numCaratteri = fileAperto.tell()

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.

Il metodo write usato su un file in modalità r+ sovrascriverà gli


elementi della linea corrispondente alla posizione attuale del
cursore.

Il metodo readline si comporterà come nella modalità read.

Posso sempre spostare il cursore con il metodo seek.

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

La funzione open viene scritta dopo la parola chiave with; la


variabile che ospiterà il wrapper viene dichiarato dopo la parola
chiave as.

19
Sistemi informativi e DBMS
Costrutto with - as
Esempio; modalità lettura:

with open("prove.txt","r") as fileAperto:


linea = fileAperto.readline()
print(linea)

Al termine del blocco di codice, l’interprete chiude il file in


automatico ma il dato estratto resta dentro la variabile linea.

20
Sistemi informativi e DBMS
Costrutto with - as
Esempio; modalità srittura:

with open("prove.txt","w") as fileAperto:


fileAperto.write("Ciao!\n")

Al termine del blocco di codice, l’interprete esegue il flush e


chiude il file

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.

Il metodo readlines() del wrapper del file restituisce una lista


di stringhe. Esempio con il costrutto with:

with open("prove.txt","r") as fileAperto:


linee = fileAperto.readlines()
print(linee)

Ma cos’è una lista? È un tipo di dato strutturato.

22
Sistemi informativi e DBMS

Potrebbero piacerti anche