I'm experiencing strange errors both with pickle and cPickle in the below code:
import cPickle as pickle #import pickle from string import ascii_uppercase from string import ascii_lowercase def createData(): d1 = list("Something's rotten") d2 = tuple('in the state of Denmark') d3 = [('a', 'b'), ('c', 'd')] #d3 = [('s a', 's b'), ('s c', 's d')] #d3 = [('sa', 'sb'), ('sc', 'sd')] #d3 = [['s a', 's b'], ['s c', 's d']] d4 = dict(zip(ascii_uppercase,ascii_lowercase)) return [d1, d2, d3, d4] def doPickle(data, pickleFile = 'pickleTest.p', proto = 2): f = XWwz(pickleFile, 'w') p = pickle.Pickler(f, proto) p.dump(data) f.close() def doUnpicle(pickleFile = 'pickleTest.p'): f = XWwz(pickleFile, 'rb') up = pickle.Unpickler(f) data = up.load() f.close() return data data = createData() doPickle(data) xdata = doUnpicle() 1) The above code works, but if I use pickle instead of cPickle, I get "KeyError: '\n'" when unpickling. 2) If I uncomment any of the other d3 bindings in createData(), I get "KeyError: '\n'", or "cPickle.UnpicklingError: invalid load key, ''" (newline) 3) If I don't use the d1, d2 and d4 bindings, no error occurs. I can't find the explanation. Why the newline error? There are no newlines in the data. Are not all those structures pickable? Thanks for all help! (on WinXP, CPython 2.4.1) -- http://mail.python.org/mailman/listinfo/python-list