Graceful detection of EOF

Jeremy Jones zanesdad at
Fri Oct 8 00:58:05 CEST 2004

Andrew Dalke wrote:

> MickeyBob wrote:
>> How does one detect the EOF gracefully? Assuming I have a pickle file
>> containing an unknown number of objects, how can I read (i.e.,
>> pickle.load()) until the EOF is encountered without generating an EOF
>> exception?
> Why isn't catching the exception graceful?
> def load_pickle_iter(infile):
>   while 1:
>     try:
>       yield pickle.load(infile)
>     except EOFError:
>       break
> for obj in load_pickle_iter(open("mydata.pickle", "rb")):
>   print obj
> This is well in line with the normal Python idiom,
> as compared to "look before you leap".
>                 Andrew
>                 dalke at

So, what you're saying is that the Python way, in contradistinction to 
"look before you leap", is "land in it, then wipe it off?"  Can we get 
that in the Zen of Python?  :-)

Seriously, this is beautiful.  I understand generators, but haven't 
become accustomed to using them yet.  That is just beautiful, which _is_ 

Jeremy Jones

More information about the Python-list mailing list