Syntactic structure for 'until :' loop

2011-01-11 Thread eblume
I'm still quite new to Python and I'm probably going about this
entirely the wrong way, but it recently struck me that there might be
the need for a control flow loop based on exception handling. First
let me give the proposed syntax:

until :
do_something()

This would be exactly equivalent to (but much more compact than):

while True:
try:
do_something()
except Exception:
break

Now, why would anyone want this structure? In my case, I'm using it
(well, the latter form of it, obviously) to loop over an iterator
object that was not created via the 'for obj in collection:' syntax.
Here's the actual code snippet:

headers = self.reader.next()
... intermediate code 
while True:
try:
line = self.reader.next()
except StopIteration:
return data
data.append(line)

I'm sure I'm doing this in a very backward and wrong way, and would
appreciate tips on a better way to accomplish the same task. Obviously
there is an existing syntax which handles the same situations, and I
don't suspect that this will be an embraced proposal, I'm more hoping
to spark some conversation.

Thanks!
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: Syntactic structure for 'until :' loop

2011-01-11 Thread eblume
On Jan 11, 6:53 pm, Ian Kelly  wrote:
> On 1/11/2011 7:22 PM, eblume wrote:
>
> > 
>
> reader_iter = iter(self.reader)
> headers = reader_iter.next()
> # intermediate code
> for line in reader_iter:
>      data.append(line)
> return data
>
> Also note that recommended best practice is to wrap the "headers =
> reader_iter.next()" line in a try-except in case it raises a
> StopIteration.  Otherwise it could get propagated silently up to some
> unrelated for loop higher in the stack, resulting in unexpected behavior.
>
> Cheers,
> Ian

That's brilliant, exactly the code I was looking for. Thanks very much
Ian!

Erich

-- 
http://mail.python.org/mailman/listinfo/python-list