È interessante notare come la gestione dei files in python è stata implementata internamente al linguaggio (built-in), questo permette una notevole velocita' e semplicita' nella loro gestione.
Penso che sia noto a tutti il concetto di file. In particolare, nel caso di un linguaggio di programmazione, è importante poter gestire i file per salvare delle informazioni sul disco e renderle di conseguenza persistenti.
Python permette di svolgere le comuni operazioni sui files: aprire e chiudere un file, leggere e scrivere in sequenza byte sul medesimo file ecc... . Tutto questo sia per files di testo che files binari.
Di seguito viene proposta una tabella con le principali funzioni built-in per la gestione dei files:
Operazione
Descrizione
output = open('pippo.txt','w')
apertura di un file in scrittura
input = open('dati','r')
apertura di un file in lettura
s = input.read()
lettura dell'intero contenuto del file
s = input.read(N)
lettura di N bytes
s = input.readline()
lettura di una riga (per files di testo)
s = input.readlines()
restituisce l'intero file come lista di righe (per files di testo)
Le prime tre istruzioni permettono di creare un nuovo file denominato "pippo.txt" contenente una stringa.
Successivamente viene aperto lo stesso file e viene letto riga per riga. L'ultima riga restituisce una stringa vuota, questa condizione permette di riconoscere la fine del file.
Se dovessero esserci delle righe vuote nel file, esse non vengono lette da python come righe vuote, ma righe contenenti un carattere di "A CAPO".
Combinando le funzionalita' dei files con le funzioni che python offre per gestire le stringhe
si possono creare semplici programmi estremamente utili.
Fino ad ora abbiamo fatto piccoli esempi senza alcuna utilita' pratica, adesso per mostrare come operare sui files di testo facciamo un esempio concreto.
Quando mi è stato commissionato questo manuale sono state fissate delle regole di stesura del documento, alcune regole erano le seguenti:
La E maiuscola va accentata e non apostrofata, in particolare è necessario usare il carattere È (codifica iso8859 : È).
Le parole Online e Offline vanno scritte come unica parola senza trattini o spazi.
Siccome io sono pigro e distratto e sono abituato ad apostrofare tutto (in pratica non uso
caratteri accentati poiché lavoro con sistemi operativi diversi), allora ho pensato di scrivere
tutto e poi dare in pasto il mio lavoro ad un programma che corregga accuratamente i miei errori.
Si sa, la pigrizia è la benzina dei programmatori !
Comunque ho scritto il seguente programma con blocco notes di windows:
Le prime due righe permettono di caricare delle librerie standard di python. Tali librerie si chiamano MODULI, e ne parleremo in modo approfondito in seguito.
Successivamente vengono aperti due files:
f_input è un file aperto in lettura. Il nome di tale file viene prelevato dal parametro che viene scritto dopo il nome del parametro. Infatti analogamente al linguaggio C, gli argomenti che vengono passati sulla riga di comando quando si richiama un programma vengono consegnati al programmatore in una lista predefinita di nome "sys.argv". Ricordo che argv[0] contiene il nome del programma stesso, di conseguenza argv[1] è il primo parametro.
f_output è il file di output dove intendo creare la versione corretta del mio documento. In questo caso come secondo parametro passo la lettera "w" poiché intendo creare il file in scrittura.
Ho creato un ciclo un po' strano, infatti la condizione del while è sempre vera. Potrebbe sembrare che non si esca mai da tale ciclo, invece l'uscita avviene attraverso l'istruzione break quando si raggiunge la fine del file di input. Ad ogni passo del ciclo leggo una intera riga del file di input, su questa riga applico 5 sostituzioni.
La funzione replace del modulo string sostituisce interi pezzi di stringa con altre stringhe. Ad esempio nella prima replace sostituisco tutte le E apostrofate con il corretto codice speciale html.
In questo modo correggo tutte le mie dimenticanze e spero che abbia funzionato tutto !.