[Python] Aggiornare file pickle

Daniele Varrazzo piro a develer.com
Mar 10 Maggio 2011 12:59:21 CEST


On Tue, 10 May 2011 12:13:34 +0200, Filadelfo Fiamma
<philosganga a gmail.com> wrote:
> Il 10 maggio 2011 12:07, Daniele Varrazzo <piro a develer.com> ha scritto:
>> On Tue, 10 May 2011 12:01:42 +0200, Filadelfo Fiamma
>> <philosganga a gmail.com> wrote:
>>
>>> Mi chiedo se invece sia possibile aggiornare il file pickle, andando
>>> dunque a modificare e/o aggiungere solo delle specifiche parti
>>> piuttosto che effettuare il dump dell'intero oggetto?
>>
>> No. Pickle non è un database, è uno stream. Puoi mettere il risultato
di
>> pickle in un database ma difficilmente puoi trattarlo in maniera
diversa
>> da
>> un blob opaco.
> 
> Capisco, tralasciando la difficoltà, la via da percorrere sarebbe la
> modifica dei metodi __getstate__ e __setstate__ ?

No, forse non le hai capite :)

Pickle si comporta come una sorta di framework: visita un grafo di oggetti
e per ognuno ne estrae lo stato. Puoi personalizzare come il tuo oggetto
viene salvato nel pickle implementando __get/setstate__, ma questo non
modifica la strategia di visita né la scrittura del file.

Pickle è uno stream, il che vuol dire che non chiede mai al file in cui
scrivere "modifica i byte dal 100 al 103". Se lo facesse non potresti
scrivere un pickle su stdout o leggerlo da stdin. Questo rende pickle un
formato di serializzazione, non un database.


-- 
Daniele Varrazzo - Develer S.r.l. 
http://www.develer.com


Maggiori informazioni sulla lista Python