Accademia:Input e Output: differenze tra le versioni
Nessun oggetto della modifica |
S3v (discussione | contributi) (tolto "stub") |
||
(60 versioni intermedie di un altro utente non mostrate) | |||
Riga 1: | Riga 1: | ||
{{ | {{Acc_Menu_Python}} | ||
== Input e Output su file di testo puro == | == Input e Output su file di testo puro == | ||
=== Creazione dell'oggetto file=== | === Creazione dell'oggetto file=== | ||
Per interagire con un file di testo si ricorre all' uso della finzione '''open()'''. In pratica la funzione crea l'''oggetto file'', una rappresentazione | Per interagire con un file di testo si ricorre all' uso della finzione '''open()'''. In pratica la funzione crea l'''oggetto file'', una rappresentazione del nostro file in linguaggio python. | ||
La funzione open() ha due argomenti, entrambi sotto forma di stringa: | La funzione open() ha due argomenti, dei quali solo il primo è obbligatorio, entrambi sotto forma di stringa: | ||
'''nome del file con l'eventuale percorso (filename)''', per indicare il percorso si può usare sia quello ''assoluto'' che quello ''relativo''. | *'''nome del file con l'eventuale percorso (filename)''', per indicare il percorso si può usare sia quello ''assoluto'' che quello ''relativo''. | ||
{{Box|Nota|Il '''percorso assoluto'''individua la posizione del file con riferimento all' intero filesystem, quindi inizia sempre con la radice, che nei sistemi similunix è indicata con la '/'. | |||
Il '''percorso relativo''' fa riferimento alla directory di lavoro, quella dove ci troviamo al momento. }} | |||
'''modo nel quale il file | *'''modo nel quale il file verrà usato (mode)''', ''''r'''' apre il file in modalità lettura, ''''w'''' apre il file in modalità scrittura,''' 'a'''' aggiunge del contenuto (testo) in coda al file, ''''r+'''' apre il file in modalità lettura e scrittura. Se non viene specificato alcun valore viene preso quello di default ''''r''''. | ||
{{ Warningbox | Se in apre un file già esistente in modalità ''''w'''' il file esistente viene cancellato.}} | |||
Quindi, per '''creare il file''' prova.txt nella directory corrente: | |||
<pre> | |||
>>> f = open('prova.txt','w') | |||
>>> f | |||
<_io.TextIOWrapper name='prova.txt' encoding='UTF-8'> | |||
</pre> | |||
abbiamo dunque creato l'oggetto file ''<_io.TextIOWrapper name='prova.txt' encoding='UTF-8'>'' e lo abbiamo assegnato alla variabile ''f'' (da notare la codifica di default è '''UTF-8'''). In pratica abbiamo creato il file di testo ''prova.txt'', vuoto, nella directory corrente. | |||
=== Metodi dell'oggetto file=== | |||
Possiamo '''scrivere''' sul nostro file ''prova.txt'' con il metodo '''write()''': | |||
<pre> | |||
>>> f.write('1° riga del mio file\n') | |||
21 | |||
>>> f.write('2° riga del mio file\n') | |||
21 | |||
>>> f.close() | |||
</pre> | |||
Analizzando il codice sopra, vediamo che abbiamo scritto le prime 2 righe del nostro file (notare l'uso di \n alla fine di ogni riga), dopo ogni chiamata del metodo write() ci viene segnalato il n° di caratteri che abbiamo scritto. | |||
L'ultimo metodo richiamato è '''close()''', che chiude il collegamento al file prova.txt (è buona norma chiudere il collegamento al file al termine di ogni operazione) | |||
Adesso '''leggiamo''' il contentuo di prova.txt: | |||
<pre> | |||
>>> f = open('prova.txt','r') | |||
>>> f.read() | |||
'1° riga del mio file\n2° riga del mio file\n' | |||
>>> f.seek(0) | |||
0 | |||
>>> f.readline() | |||
'1° riga del mio file\n' | |||
>>> f.readline() | |||
'2° riga del mio file\n' | |||
>>> f.seek(0) | |||
0 | |||
>>> f.readlines() | |||
['1° riga del mio file\n', '2° riga del mio file\n'] | |||
>>> f.close() | |||
</pre> | |||
Analizzando il codice vediamo che per la lettura del file abbiamo usato 3 diversi metodi: | |||
:'''read()''' restituisce una stringa con l'intero contenuto del file (compresi i i caratteri \n) | |||
:'''readline()''' restituisce una stringa con l'intero contenuto di ogni riga | |||
:'''readlines()''' restituisce una lista con tutte le righe | |||
Da notare l'uso del metodo '''seek'''(''offset, from_what'') che permette di cambiare la posizione dell'oggetto all'interno del file. Ha due argomenti di cui solo il primo è obbligatorio: | |||
:''offset'' - rappresenta il numero di byte (caratteri) da aggiungere al secondo argomento (from_what) in base alla posizione che vogliamo raggiungere all'interno del file | |||
:''from_what'' - rappresenta il punto di inizio dello spostamento, '''0''' dall'inizio del file, '''1''' dalla posizione corrente, '''2''' dalla fine del file (valore di default 0) | |||
Nel nostro caso '''seek(0)''' significa spostati di 0 byte dall' inizio del file (0) | |||
Per conoscere la posizione attuale dell'oggetto, misurata in byte dall'inizio del file possiamo usare il metodo '''tell()'''. | |||
'''aggiungiamo un'altra riga''' al nostro file: | |||
<pre> | |||
>>> f = open('prova.txt','a') | |||
>>> f.write('3° riga del mio file\n') | |||
21 | |||
>>> f.close() | |||
</pre> | |||
visualizziamo il nuovo contenuto: | |||
<pre> | |||
>>> f = open('prova.txt','r') | |||
>>> print(f.read()) | |||
1° riga del mio file | |||
2° riga del mio file | |||
3° riga del mio file | |||
</pre> | |||
'''Riferimenti''' | |||
* [http://docs.python.org/release/3.1.3/tutorial/inputoutput.html#reading-and-writing-files Reading and Writing files] | |||
* [http://docs.python.org/release/3.1.3/library/functions.html#open Open method] | |||
Riga 34: | Riga 98: | ||
[[Categoria:Accademia Python - Lezione | |||
[[Categoria:Accademia Python - Lezione 26]][[Categoria:Accademia Python - Lezione 27]] |
Versione attuale delle 13:34, 7 giu 2015
Input e Output su file di testo puro
Creazione dell'oggetto file
Per interagire con un file di testo si ricorre all' uso della finzione open(). In pratica la funzione crea l'oggetto file, una rappresentazione del nostro file in linguaggio python.
La funzione open() ha due argomenti, dei quali solo il primo è obbligatorio, entrambi sotto forma di stringa:
- nome del file con l'eventuale percorso (filename), per indicare il percorso si può usare sia quello assoluto che quello relativo.
- modo nel quale il file verrà usato (mode), 'r' apre il file in modalità lettura, 'w' apre il file in modalità scrittura, 'a' aggiunge del contenuto (testo) in coda al file, 'r+' apre il file in modalità lettura e scrittura. Se non viene specificato alcun valore viene preso quello di default 'r'.
ATTENZIONE Se in apre un file già esistente in modalità 'w' il file esistente viene cancellato. |
Quindi, per creare il file prova.txt nella directory corrente:
>>> f = open('prova.txt','w') >>> f <_io.TextIOWrapper name='prova.txt' encoding='UTF-8'>
abbiamo dunque creato l'oggetto file <_io.TextIOWrapper name='prova.txt' encoding='UTF-8'> e lo abbiamo assegnato alla variabile f (da notare la codifica di default è UTF-8). In pratica abbiamo creato il file di testo prova.txt, vuoto, nella directory corrente.
Metodi dell'oggetto file
Possiamo scrivere sul nostro file prova.txt con il metodo write():
>>> f.write('1° riga del mio file\n') 21 >>> f.write('2° riga del mio file\n') 21 >>> f.close()
Analizzando il codice sopra, vediamo che abbiamo scritto le prime 2 righe del nostro file (notare l'uso di \n alla fine di ogni riga), dopo ogni chiamata del metodo write() ci viene segnalato il n° di caratteri che abbiamo scritto.
L'ultimo metodo richiamato è close(), che chiude il collegamento al file prova.txt (è buona norma chiudere il collegamento al file al termine di ogni operazione)
Adesso leggiamo il contentuo di prova.txt:
>>> f = open('prova.txt','r') >>> f.read() '1° riga del mio file\n2° riga del mio file\n' >>> f.seek(0) 0 >>> f.readline() '1° riga del mio file\n' >>> f.readline() '2° riga del mio file\n' >>> f.seek(0) 0 >>> f.readlines() ['1° riga del mio file\n', '2° riga del mio file\n'] >>> f.close()
Analizzando il codice vediamo che per la lettura del file abbiamo usato 3 diversi metodi:
- read() restituisce una stringa con l'intero contenuto del file (compresi i i caratteri \n)
- readline() restituisce una stringa con l'intero contenuto di ogni riga
- readlines() restituisce una lista con tutte le righe
Da notare l'uso del metodo seek(offset, from_what) che permette di cambiare la posizione dell'oggetto all'interno del file. Ha due argomenti di cui solo il primo è obbligatorio:
- offset - rappresenta il numero di byte (caratteri) da aggiungere al secondo argomento (from_what) in base alla posizione che vogliamo raggiungere all'interno del file
- from_what - rappresenta il punto di inizio dello spostamento, 0 dall'inizio del file, 1 dalla posizione corrente, 2 dalla fine del file (valore di default 0)
Nel nostro caso seek(0) significa spostati di 0 byte dall' inizio del file (0)
Per conoscere la posizione attuale dell'oggetto, misurata in byte dall'inizio del file possiamo usare il metodo tell().
aggiungiamo un'altra riga al nostro file:
>>> f = open('prova.txt','a') >>> f.write('3° riga del mio file\n') 21 >>> f.close()
visualizziamo il nuovo contenuto:
>>> f = open('prova.txt','r') >>> print(f.read()) 1° riga del mio file 2° riga del mio file 3° riga del mio file
Riferimenti