pickle broken: can't handle NaN or Infinity under win32

Grant Edwards grante at visi.com
Tue Jun 21 19:18:08 EDT 2005


On 2005-06-21, Grant Edwards <grante at visi.com> wrote:

> I finally figured out why one of my apps sometimes fails under
> Win32 when it always works fine under Linux
[...]

Oh, I forgot, here's pickletest.py:

#!/usr/bin/python
import pickle

f1 = (1e300*1e300)
f2 = f1/f1
o = (f1,f2)
s = pickle.dumps(o)
d = pickle.loads(s)

print o,d

>   $ python pickletest.py
>   (inf, nan) (inf, nan)


> Under Win32:
>
>   $ python pickletest.py
>   Traceback (most recent call last):
>     File "pickletest.py", line 8, in ?
>       d = pickle.loads(s)
>     File "C:\PYTHON23\lib\pickle.py", line 1394, in loads
>       return Unpickler(file).load()
>     File "C:\PYTHON23\lib\pickle.py", line 872, in load
>       dispatch[key](self)
>     File "C:\PYTHON23\lib\pickle.py", line 968, in load_float
>       self.append(float(self.readline()[:-1]))
>   ValueError: invalid literal for float(): 1.#INF


-- 
Grant Edwards                   grante             Yow!  Here I am in 53
                                  at               B.C. and all I want is a
                               visi.com            dill pickle!!



More information about the Python-list mailing list