Help with cPickle for deserializing datetime.datetime instances
Mingus Tsai
mytsai at u.washington.edu
Fri Oct 14 12:09:25 EDT 2005
Hans Georg Krauthaeuser wrote:
> Mingus Tsai schrieb:
>
>>Hello- please help with unpickling problem:
>>
>>I am using Python version 2.3.4 with IDLE version 1.0.3 on a Windows
>>XPhome system.
>>
>>My problem is with using cPickle to deserialize my pickled arrays of
>>datetime.datetime instances. The following is the code I have written:
>>
>> import cPickle, datetime
>> import Numeric
>>
>>#the file below contains a serialized dict with arrays of datetime
>>#objects. When these three statements run, the IDLE crashes!
>>
>> input1 = open('tsm2_outa','r')
>> time1 = cPickle.load(input1)
>> input1.close()
>>
>>#the file below contains serialized dict with arrays of built-in objects
>>#it unpickles without any problem, when I omit the above unpickling
>>#operation.
>>
>> input2 = open('tsm2_outb','rb')
>> data1 = cPickle.load(input2)
>> input2.close()
>>
>>My guess is that I need to somehow tell the pickle.load command that it
>>is loading datetime instances, but I have no idea how to do this. Any
>>help would be much appreciated.
>>
>>Thanks,
>>Ming
>
> How did you wrote the pickle-file. If you used mode 2 you have to open
> the file with mode "rb", as you did for the other pickle file.
>
> Hans
here's the code from my pickling:
#dict of arrays of datetime objects
export1 = {'gagetime':gagednt2ar,'gagetime_offset':gagednt2_offsetar,
'tektime_lagb':mdntmar,'tektime':mdntzar,'tektime_lagf':mdntpar}
#dict of arrays of built-in objects
datamat = {'az':azrowfar,'el':elrowfar,'tekrange_lagb':mtmt,
'tekrange':mtzt,'tekrange_lagf':mtpt,'teksig_lagb':mvmt,
'teksig':mvzt,'teksig_lagf':mvpt,'gagerange':gagerange,
'gagesig':gagesig}
time_out = open('tsm2_outa','w')
cPickle.dump(export1,time_out)
time_out.close()
data_out = open('tsm2_outb','wb')
cPickle.dump(datamat,data_out,1)
data_out.close()
------ So, you can see that the first dict is pickled in ascii (those
arrays are pretty small), but the second dict (the one that i have no
problem unpickling) is pickled in binary. However, I have tried both
ascii and binary for the frist dict, but both crash the IDLE. I don't
understand how pickling works with non built-in objects--is it necessary
for me to tell it that I have datetime objects and how do i do that?
Or perhaps there's something entirely different happening?
much obliged, Ming
More information about the Python-list
mailing list