A Byte of Python

Capitolo 12. Input/Output

Sommario

File
Usare i file
Pickle
Serializzazione e deserializzazione
Sommario

In molti casi si vorrebbe che il programma interagisse con l'utente. Si potrebbe volere avere un input dall'utente e scrivere qualcosa come risultato. Si può ottenere questo usando rispettivamente le istruzioni raw_input e print. Per l'output si possono usare anche i vari metodi della classe str. Per esempio, si può usare il metodo rjust per avere una stringa giustificata a destra dell'ampiezza specificata. Vedere help(str) per maggiori dettagli.

Un altro tipo comune di input/output è trattare con i file. La capacità di creare, leggere e scrivere file è essenziale per molti programmi e sarà questo l'argomento trattato in questo capitolo.

File

Si possono aprire ed usare file in lettura o scrittura creando un oggetto della classe file e usando i suoi metodi read, readline o write per leggere/scrivere da/in un file. La possibilità di leggere o scrivere un file dipende dal modo specificato nell'apertura del file stesso. Una volta terminato il lavoro sul file occorre chiamare il metodo close per dire a Python che è terminato l'uso del file.

Usare i file

Esempio 12.1. Usare i file

				
#!/usr/bin/python
# Filename: using_file.py

poem = '''\
Programming is fun
When the work is done
if you wanna make your work also fun:
	use Python!
'''

f = file('poem.txt', 'w') # apertura in scrittura ('w'riting)
f.write(poem)             # scrittura del testo in un file
f.close()                 # chiusura del file

f = file('poem.txt')      # se non viene specificato nessun modo, 
			  # viene usato il modo 'r'ead (lettura) di default
while True:
	line = f.readline()
	if len(line) == 0: # lunghezza zero indica l'EOF 
			   # (NdT. End Of File, fine del file)
		break
	print line, 	   # Notare la virgola per evitare il ritorno
			   # a capo automatico aggiunto da Python
f.close() 		   # chiusura del file
				
				

Output

				
$ python using_file.py
Programming is fun
When the work is done
if you wanna make your work also fun:
        use Python!
				
				

Funzionamento

Il primo passo è stato creare un'istanza della classe file specificando il nome del file ed il modo in cui lo si vuole aprire. Il modo può essere in lettura ('r'), scrittura ('w') o append ('a'). In realtà ci sono molti più modi a disposizione. Usando help(file) si ottengono ulteriori dettagli.

Inizialmente si apre il file in modalità scrittura usando il metodo write per scrivere nel file. Al termine con l'istruzione close si chiude il file.

Se non viene specificata alcuna modalità di apertura, come già detto quella in lettura è la predefinita. Si legge ogni riga del file con il metodo readline posto all'interno di un ciclo. Questo metodo restituisce una linea completa includendo il carattere di newline alla fine della riga. Quando viene restituita una stringa vuota significa che si è giunti alla fine del file, e quindi il ciclo termina.

Da notare l'uso della virgola con l'istruzione print per sopprimere il newline automatico che l'istruzione print aggiunge in automatico, dal momento che la riga letta dal file termina già con un carattere di newline. Alla fine si chiude (close) il file.

Guardando il contenuto del file poem.txt si ha la conferma che il programma abbia fatto il suo lavoro in modo corretto.