the usage of pickle
Brian McErlean
brianmce at bigfoot.com
Fri Aug 10 11:23:17 EDT 2001
Dino Hsu <dino1_nospam at ms1.hinet.net> wrote in message news:<egb7nt4ba7iusumbjsd8thqhd0j943c1qf at 4ax.com>...
> Dear all,
>
> When I try pickle.dump(...), it always fails, anyone show me how?
> Thanks in advance.
>
> >>> def f():
> return '123456'
> >>> f
> <function f at 01215F2C>
>
> >>> pickle.dump(f,'test.txt')
> Traceback (most recent call last):
> File "<pyshell#60>", line 1, in ?
> pickle.dump(f,'test.txt')
> File "c:\python21\lib\pickle.py", line 939, in dump
> Pickler(file, bin).dump(object)
> File "c:\python21\lib\pickle.py", line 104, in __init__
> self.write = file.write
> AttributeError: write
>
> Dino
Pickle accepts a file object as its second parameter,
not a filename - the AttributeError is because python is trying
to find the 'write' method of the string "test.txt"
Try this instead:
>>> file = open("test.txt","w") # Open for writing
>>> pickle.dump(f,file)
>>> file.close()
You can reload it similarly:
>>> infile = open("test.txt")
>>> obj = pickle.load(infile)
>>> obj()
'123456'
But note : Pickle does not save the bytecode for functions, just
the name. If you put a "del f" before the pickle.load() call, then
this will fail. (Try pickle.dumps(f) to see what the data looks
like pickled.)
--
Brian McErlean
More information about the Python-list
mailing list