6 999
contributi
S3v (discussione | contributi) (tolto "stub") |
|||
(40 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 == | ||
Riga 16: | Riga 15: | ||
{{ Warningbox | Se in apre un file già esistente in modalità ''''w'''' il file esistente viene cancellato.}} | {{ Warningbox | Se in apre un file già esistente in modalità ''''w'''' il file esistente viene cancellato.}} | ||
Quindi, per creare | Quindi, per '''creare il file''' prova.txt nella directory corrente: | ||
<pre> | <pre> | ||
>>> f = open('prova.txt','w') | >>> f = open('prova.txt','w') | ||
Riga 22: | Riga 21: | ||
<_io.TextIOWrapper name='prova.txt' encoding='UTF-8'> | <_io.TextIOWrapper name='prova.txt' encoding='UTF-8'> | ||
</pre> | </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'''). | 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 43: | Riga 108: | ||
[[Categoria:Accademia Python - Lezione | [[Categoria:Accademia Python - Lezione 26]][[Categoria:Accademia Python - Lezione 27]] |
contributi