Files

I computers utilizzano i file per memorizzare e recuperare i dati.

Ogni file è un contenitore individuale di informazioni correlate tra loro.
Se avete mai salvato sul tuo computer un documento, scaricato un video o un allegato di qualche email, hai creato un file.

Il programma Python che crei seguendo le informazioni che trovi in questo tutorial è un file.

f = open("test.txt")    # apre il file nella directory corrente
f = open("C:\Windows\testo.txt")  # percorso completo

L'oggetto file

Un oggetto file viene creato quando un file viene aperto con la funzione open().

Si può associare questo oggetto file con una variabile quando si apre un file usando with ed as come comando.

È quindi possibile stampare il contenuto dell'oggetto file con print().

with open("nome_file.txt") as oggetto_file:
  print (oggetto_file)

Metodo .read() .readline() e .readlines()

Dopo che il file è stato aperto con open() con il metodo .read() viene restituita una stringa di tutto il contenuto del file.

Per leggere una sola riga invece di più righe in un file Python, usare il metodo .readline() su un oggetto file che viene restituito dalla funzione open().

Ogni successiva .readline() estrarrà la riga successiva nel file, se esiste.

Invece .readlines() restituisce una lista di stringhe, ognuna delle quali rappresenta una singola riga del file.

with open("prova.txt") as file_testo:
   f = file_testo.read()
   print (f)

with open("prova.txt") as file_testo:
  print (file_testo.readline())

with open("prova.txt") as file_testo:
  file = file_testo.readlines()
   print (file)

Scrivere su un file

Per impostazione predefinita, un file aperto con open() è solo per la lettura.

Il secondo parametro "r", che si dovrebbe specificare per la lettura, è predefinito. Per scrivere su un file, bisogna aprire il file con il permesso di scrittura tramite il parametro "w" (write) invece che "r".

Poi usare il metodo .write() per scrivere sul file. Se il file esiste già, tutti i contenuti precedenti saranno sovrascritti.

with open("testo.txt","w") as testo_prova:
  testo_prova.write ("Questo è un testo di prova.")

Append

La scrittura su un file aperto con il parametro "w" sovrascrive tutti i contenuti precedenti nel file.

Per evitare questo, possiamo invece fare l'append, ovvero aggiungere degli elementi in fine ad un file. Usare il parametro "a" come secondo argomento per la funzione open().

Se un file non esiste, verrà creato nella modalità append.

with open("testo.txt","a") as testo_prova:
  testo_prova.write ("Questo è un testo di prova.")

Classe csv.DictWriter

In Python, il modulo csv implementa classi per leggere e scrivere dati in formato CSV.

Dentro questo modulo è presente una classe DictWriter che funziona come un normale scrittore, ma mappa un dictionary su righe di output.

Le chiavi del dizionario sono i nomi delle colonne, mentre i valori sono dati reali.

Il costruttore csv.DictWriter prende due argomenti. Il primo è il gestore del file appena aperto su cui viene scritto il CSV.
Il secondo parametro denominato, fieldnames, è una lista di nomi dei campi che il file CSV gestirà.

import csv

with open ("nome_file.csv", 'w') as csvfile:
  nome_campi = ["nome", "tipo"]
  scrittore_file = csv.DictWriter (csvfile, fieldnames=nome_campi)
  scrittore_file.writeheader()
  scrittore_file.writerow ({"nome": "Tuttofaredigitale", "tipo": "tutorial"})
  scrittore_file.writerow ({"nome": 'Google', "tipo": "Motore di ricerca"})

# Dopo aver eseguito il codice sopra, nome_file.csv conterrà le seguenti informazioni:
# nome,tipo
# Tuttofaredigitale,tutorial
# Google,Motore di ricerca