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 -- http://mail.python.org/mailman/listinfo/python-list