[Python] Pickling in P3.

Paolo Di Ieso paolodiieso a libero.it
Lun 12 Giu 2017 11:50:24 CEST


Il 12/06/2017 11:35, Carlo Miron ha scritto:
> 2017-06-12 11:31 GMT+02:00 Raffaele Salmaso <raffaele a salmaso.org>:
>> 2017-06-12 11:21 GMT+02:00 Daniele Zambelli <daniele.zambelli a gmail.com>:
>>> Il 9 giugno 2017 12:09, Davide Olianas <davide a davideolianas.com> ha
>>> scritto:
>>>> with open('pippo', 'rb') as f:
>>>>      oggetto = pickle.load(f)
>>> Perché usare with e non semplicemente:
>>> f = open('pippo', 'rb')
>>> oggetto = pickle.load(f)
>>> ?
>> Così ti rimane aperto il file inutilmente, col with invece lo chiudi appena
>> hai finito di usarlo.
>> Per uno script usa e getta potrebbe non essere un problema, ma in generale
>> meglio liberare le risorse usate appena possibile.
> Inoltre se non chiudi esplicitamente il file, Windows™ non lo scrive
> su disco, abbiamo scoperto.

Aggiungo: e mentre "with" ti chiude automaticamente il file anche in 
caso di eccezione, nel caso di un'eccezione lanciata prima di arrivare a 
un ipotetico f.close() il file rimarrebbe comunque aperto. Puoi sempre 
utilizzare try/finally per chiudere il file qualunque cosa vada storto, 
ma with è lì che lo fa per te, perché non usarlo...

Paolo


Maggiori informazioni sulla lista Python