Hi,

Your test program works for me on PythonCE 2.4.3.

Luke

----- Original Message ----- 
From: "Matt S." <[EMAIL PROTECTED]>
To: <pythonce@python.org>
Sent: Saturday, May 27, 2006 3:47 AM
Subject: [PythonCE] pickle problem on 2.3.4 pythonCE (for wxPython)


> Hi,
> 
> I'm trying to make a data collection UI for Windows CE using the
> wxPyCE distribution (which uses Python 2.3.4)  found at,
> 
> http://www.traybor.com/PythonCE/
> 
> It's gone well so far but I'm running into a serious data pickling
> problem.  Ideally I would like to pickle a class instance.
> 
> Saving and loading the pickled class works fine on my PC (Python 2.4x),
> 
> *pickleDump.py*
> f = open('pickle_file.pyp', 'r')
> pickle.dump(my_class_instance, f)
> 
> *pickleLoad.py*
> f = open('saved_pickle.pyp', 'r')
> my_pickled_class_instance = pickle.load(f)
> 
> In my UI module the pickling are methods in a class.  Also, "my_class"
> is actually, "another_module.top_level_class.data," wherein ".data" is
> a dictionary with keys that are person names and values that are the
> corresponding person instance.
> 
> Realizing that I'm probably breaking the pickling rules with pickling
> my data class, I changed "my_class" in *pickleDump.py* to a simple
> dictionary...  and it still failed on CE.  Fortunately, simplifying my
> data to a simple list does pickle.  So, in the worst case I can
> convert my data into lists (not pretty so if you have a better
> workaround idea I'd really appreciate it).
> 
> Here's the traceback from my attempt to load the pickled dictionary,
> 
> Traceback (most recent call last):
>  File "\Program Files\python\dev\pickleLoad.py", line 10, in ?
>    var = pickle.load(f)
>  File "binaries\lib\pickle.py", line 1390, in load
>  File "binaries\lib\pickle.py", line 872, in load
>  File "binaries\lib\pickle.py", line 985, in load_string
> LookupError: no codec search functions registered: can't find encoding
> 
> Here are my test modules,
> 
> *pickleDump.py*
> 
> import pickle, traceback, sys
> 
> 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:
> 
>    pickle.dump(var,f)
>    print 'Pickled dumped OK in,', __file__
> except:
>    traceback.print_exc()
>    print 'Pickle dump failed! in', __file__
> 
> f.close()
> 
> 
> *pickleLoad.py*
> 
> import pickle, sys, traceback
> 
> 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
> except:
> 
>    traceback.print_exc()
>    print 'Pickle not loaded in,', __file__
> 
> Many thanks for your help,
> Matt
_______________________________________________
PythonCE mailing list
PythonCE@python.org
http://mail.python.org/mailman/listinfo/pythonce

Reply via email to