Questo è un semplice esempio di File IO:
L'output e i contenuti del file test.txt sono:
#Write a file
out_file = open("test.txt","w")
out_file.write("This Text is going to out file\nLook at it and see\n")
out_file.close()
#Read a file
in_file = open("test.txt","r")
text = in_file.read()
in_file.close()
print text,
Osservate come il programma scriva un file chiamato
test.txt nella directory nella
quale viene eseguito.
Il "\n" nella stringa dice a
Python di andare a capo nel punto in cui compare.
This Text is going to out file
Look at it and see
Una panoramica sul file IO:
Aprite un oggetto file con la funzione open
Leggete o scrivete nell'oggetto file (dipendentemente da come l'avete aperto)
Chiudetelo
Il primo passo è usare un oggetto file grazie alla funzione open. La sintassi è oggetto_file = open (nome_file, modo) dove oggetto_file è la variabile contenente l'oggetto file, nome_file la stringa con il nome del file, e modo la modalità di apertura del file: "r" in lettura, "w" in scrittura. Dopodiché potrete chiamare le funzioni dell'oggetto file. Le due funzioni più comuni sono read e write: la funzione read legge il file e ne ritorna il contenuto sottoforma di stringa, la funzione write aggiunge una stringa alla fine del file.
Output:
> python tele2.py 1. Print Phone Numbers 2. Add a Phone Number 3. Remove a Phone Number 4. Lookup a Phone Number 5. Load numbers 6. Save numbers 7. Quit Type in a number (1-7):2 Add Name and Number Name:Jill Number:1234 Type in a number (1-7):2 Add Name and Number Name:Fred Number:4321 Type in a number (1-7):1 Telephone Numbers: Name: Jill Number: 1234 Name: Fred Number: 4321 Type in a number (1-7):6 Filename to save:numbers.txt Type in a number (1-7):7 Goodbye > python tele2.py 1. Print Phone Numbers 2. Add a Phone Number 3. Remove a Phone Number 4. Lookup a Phone Number 5. Load numbers 6. Save numbers 7. Quit Type in a number (1-7):5 Filename to load:numbers.txt Type in a number (1-7):1 Telephone Numbers: Name: Jill Number: 1234 Name: Fred Number: 4321 Type in a number (1-7):7 Goodbye
Le nuove porzioni del programma sono:
def load_numbers(numbers,filename): in_file = open(filename,"r") while 1: in_line = in_file.readline() if len(in_line) == 0: break in_line = in_line[:-1] [name,number] = string.split(in_line,",") numbers[name] = number in_file.close() def save_numbers(numbers,filename): out_file = open(filename,"w") for x in numbers.keys(): out_file.write(x+","+numbers[x]+"\n") out_file.close()
Analiziamo la funzione save_numbers del programma. Innanzitutto crea un oggetto file con il comando open(filename, "w") dopodiché crea una nuova linea per ognuno dei numeri di telefono con il comando out_file.write(x+","+nombers[x]+"\n"). In questo modo scrive una linea contenente il nome, una virgola ed il numero, seguito da un 'a capo' (newline).
La funzione load_numbers è un po' più complessa. Inizia creando un oggetto file quindi usa un ciclo while per scorrere il file e leggere le linee con l'istruzione in_line = in_file.readline() finché non incontra un break. L'istruzione if esegue un controllo e uscirà dal ciclo while con una istruzione break nel momento in cui incontrerà la fine del file (len(in_line) == 0) .
L'istruzione in_line = in_line[:-1] elimina l'ultimo carattere della linea (il newline che farebbe andare a capo la linea) e nelle restanti istruzioni viene trattata la stringa dividendola in base alla virgola in due parti: [name,number] = string.split(in_line,",") , nome e numero. Infine il numero viene inserito nel dizionario numbers.
Modificate il programma dei voti del Capitolo 11 per salvare su di un file la registrazione degli studenti.