Those are some good responses, but I think they focused a little too much on the specifics of my example - especially the 'print' statement. In real life, I want to set some return values to sensible defaults if the file doesn't exist, but I want the errors from inside the block to trickle up as normal. And yes, I can easily use a temporary variable for the open file, but it really seems to me that this defeats the purpose of the 'with' statement - if this were something more dangerous than a file, I'd feel mighty leery of having it in a temporary variable outside a 'with' for even a moment.
So, the options are: -temporary variable - could this EVER be more dangerous than the with statement (KeyboardInterrupt which is later caught and handled?) -'tunnel' internal exceptions past the try by wrapping them in a TunnelException and then unwrapping them with a containing try block. The second looks like a hack to me, and the first still feels dangerous. So I still think that some syntax here would be a bit more than just sugar. -- http://mail.python.org/mailman/listinfo/python-list