[PythonCE] pickle problem on 2.3.4 pythonCE (for wxPython)

Matt S. sleepingbull at gmail.com
Sun May 28 23:03:57 CEST 2006


Good news.  I tried pickling with "cPickle" and it works for pickling
dictionaries and classes where "pickle" didn't.  I guess this arises
from the fact that per the documentation, "cPickle can be up to 1000
times faster than pickle because the former is implemented in C." If
anyone can expound on this great.  But for now I'm very pleased that
pickling is supported on pythonCE with wxPython.

Here's my updated test code,

*pickleDump.py*

import cPickle as pickle
import traceback, sys

"""

    This test works on PythonCE 2.3.4, the most recent version of
    PythonCE for which I've found wxPython compiled.

"""

class cdata:
    """

        This class emulates the data class I was originally trying
        to pickle.  Although pickle didn't seem to work for classes
        or dictionaries, cPickle worked for both.  I had to
        include the instance class in the load module in order to unpickle
        the pickled instance data.

    """
    def __init__(self, x):
        self.data = x

f = open('test.txt','w')
error = open('dump_error.txt','w')
sys.stderr = error
log = open('dump_out.txt','w')
sys.stdout = log

#var = [n for n in range(10)]
var = {'parm1':1, 'parm2':'2a'}

try:
    tdata = cdata(var)
    print tdata.__dict__['data']
    pickle.dump(tdata,f)
    print 'Pickled dumped OK in,', __file__
except:
    traceback.print_exc()
    print 'Pickle dump failed! in', __file__

f.close()


*pickleLoad.py*

import cPickle as pickle
import sys, traceback

class cdata:
    """

        This class emulates the data class I was originally trying
        to pickle.  Although pickle didn't seem to work for classes
        or dictionaries, cPickle worked for both.  I had to
        include the instance class in the load module in order to unpickle
        the pickled instance data.

    """
    def __init__(self, x):
        self.data = x

e = open('load_error.txt','w')
sys.stderr = e
s = open('load_out.txt','w')
sys.stdout = s

try:
    f = open('test.txt','r')
    var = pickle.load(f)
    print 'Pickle loaded OK in,', __file__
    print var.data
except:

    traceback.print_exc()
    print 'Pickle not loaded in,', __file__


More information about the PythonCE mailing list