This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2002年01月17日 03:55 by bobalex, last changed 2022年04月10日 16:04 by admin. This issue is now closed.
| Messages (4) | |||
|---|---|---|---|
| msg8819 - (view) | Author: Bob Alexander (bobalex) | Date: 2002年01月17日 03:55 | |
Here is an annotated session that shows some incorrect
exceptions raised with bad input. I'm assuming that it
is intended that when attempting to load a pickle file,
we should only have to check for UnpicklingError, not
for several other possible exceptions.
>>> import sys
>>> sys.version
'2.2 (#1, Dec 26 2001, 16:14:13) \n[GCC 2.96 20000731
(Mandrake Linux 8.1 2.96-0.62mdk)]'
Problem 1: Attempting to load an empty file produces an
EOFError exception, but should probably produce an
UnpicklingError exception. This happens with both
pickle and cPickle.
>>> import cPickle as pickle
>>> import pickle as pk
>>> f=open("/dev/null") # Empty file
>>> ff=StringIO("asdfasdfasdfasdfasdfasdf") # Garbage
file
>>> pickle.load(f)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
EOFError
>>> pk.load(f)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.2/pickle.py", line 977, in
load
return Unpickler(file).load()
File "/usr/lib/python2.2/pickle.py", line 592, in
load
dispatch[key](self)
File "/usr/lib/python2.2/pickle.py", line 606, in
load_eof
raise EOFError
EOFError
Problem 2: With cPickle, loading a garbage file
produced and IndexError, not an Unpickling error.
>>> pk.load(ff)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "/usr/lib/python2.2/pickle.py", line 977, in
load
return Unpickler(file).load()
File "/usr/lib/python2.2/pickle.py", line 592, in
load
dispatch[key](self)
File "/usr/lib/python2.2/pickle.py", line 746, in
load_dict
k = self.marker()
File "/usr/lib/python2.2/pickle.py", line 600, in
marker
while stack[k] is not mark: k = k-1
IndexError: list index out of range
|
|||
| msg8820 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2002年01月17日 07:41 | |
Logged In: YES
user_id=21627
The documentation of UnpicklingError says
Note that other exceptions may also be raised during
unpickling, including (but not necessarily limited to)
\exception{AttributeError} and \exception{ImportError}.
So I'm not so sure that there is a bug.
|
|||
| msg8821 - (view) | Author: Thomas W. Christopger (tchristopher) | Date: 2002年02月26日 15:59 | |
Logged In: YES user_id=64169 Actually, I want EOFError on the file-like object returning ''; the empty string IS an end of file indication. That's what I'm looking for when there are a varying number of objects, and yes, I use it a lot. So please DO NOT make end of file return an UnpicklingError. |
|||
| msg8822 - (view) | Author: Neil Schemenauer (nascheme) * (Python committer) | Date: 2002年03月22日 22:18 | |
Logged In: YES user_id=35752 I added IndexError and EOFError to the list of example exceptions that unpickle can raise. Closing this bug. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月10日 16:04:53 | admin | set | github: 35933 |
| 2002年01月17日 03:55:22 | bobalex | create | |