On Tue, 10 May 2011 12:13:34 +0200, Filadelfo Fiamma
<philosga...@gmail.com> wrote:
> Il 10 maggio 2011 12:07, Daniele Varrazzo <p...@develer.com> ha scritto:
>> On Tue, 10 May 2011 12:01:42 +0200, Filadelfo Fiamma
>> <philosga...@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
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a