alcuni oggetti di Python (context manager) accettano di essere inseriti in with
- rende più semplice il codice, utilizzare le funzion i dell'oggetto ed evita dimenticanze
- alla inizio del blocco l'oggetto viene aperto automaticamente f.__enter__()
- alla fine del blocco l'oggetto viene chiuso automaticamente f.__exit__()
- garantisce la chiusura del file anche nel caso in cui il programma venga interrotto da un'eccezione
sintassi
- dopo l'oggetto
oggetto = .... comandi creazione oggetto context manager
with oggetto:
... blocco di comandi che utlizzando l'oggetto
- diretto
with .... as :
... blocco di comandi che utlizzando l'oggetto
esempio: scrivi nel file
f = open('test.txt', 'w') # creiamo il file object
with f: # usiamo il file object come context manager nel with
f.write('contenuto del file') # scriviamo il file
f.closed # verifichiamo che il file è ancora aperto
f.closed # verifichiamo che dopo il with il file è chiuso
risultato
18 → scriviamo nel file 18 caratteri
False → il file é ancora aperto
True → il file é chiuso
esempio: scrivi nel file
with open('test.txt', 'w') as f: # creiamo direttamente l'oggetto f in with
f.write('contenuto del file') # scriviamo il file
f.closed # verifichiamo che dopo il with il file è chiuso
risultato
18 → scriviamo nel file 18 caratteri
True → il file é chiuso