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

Reply via email to