60756534 ml

Semplice esempio su come leggere un file di testo e creare un nuovo file di testo. In questo esempio uso:

  • open (oggetto file),
  • list + append (oggetto lista),
  • split + slicing + format (oggetto stringa).

Nonostante l'apparente semplicità dell'esempio si usano parecchie funzioni non banali.

Obiettivo: voglio leggere un file contenente dei dati come in figura:

file read write 1

e salvare un file con i dati della sola quarta colonna:

file read write 2 Questo è il codice:

file read write

Per prima cosa creo una lista vuota (riga 10).

Il modo più diretto per aprire un file sarebbe: f = open('myfile'). La documentazione python riporta però che conviene sempre usare la parola chiave with (13). Questo perché nel codice scritto alla riga 13 è l'oggetto file definito nella libreria python che si preoccupa di chiudere il file una volta usato e di effettuare un try-finally sull'operazione in-out effettuata sul file, tutto questo avviene grazie all'uso di with

Sia in riga 14 che 19 si fa uso di for in per reiterare su tutti gli elementi. Nel primo caso sono le righe del file, nel secondo, tramite la funzione len(), si reitera dentro gli estremi (0 .. len(myList)) della variabile i.

In riga 16 si usa la tecnica detta "slicing" per eliminare l'ultimo carattere da ogni riga letta. I due punti separano l'indice iniziale della stringa da quello finale, omettendo l'indice iniziale significa che viene preso tutto quello che c'è dall'inizio fino all'indice finale che in questo caso è il fine riga meno un carattere. Successivamente uso split() per creare la lista separando la stringa sugli spazi.

Dopo la riga 16 myList è una lista composta da tante righe quante sono le righe del file letto e da tante colonne quanto sono i campi di ogni riga del file.

Come fatto in precedenza si apre un nuovo file specificando l'etichetta 'w' che ci permette di crearlo o di riscriverlo. A parte la stampa a monitor di quanto si sta scrivendo nel file (20) la scrittura nel file consiste nel formattare la stringa inserendo il ritorno a capo "\n" dopo ogni elemento della lista. Per fare questo si usa il metodo format.