On Sun, Feb 3, 2013 at 6:26 AM, Nick Coghlan email@example.com wrote:
If you need both files open at the same time, you can use a nested context manager:
def f(): with open(path) as fhand: with open(path2) as ghand: process(fhand, ghand)
Or the nesting behaviour built into with statements themselves:
def f(): with open(path) as fhand, open(path2) as ghand: process(fhand, ghand)
This is indeed what I was looking for. The "with" statement does give a lot of control, though I do dislike the double indentation and also dislike opening 2 files on one line. Sucks to be me.
Function and class definitions control name scope (amongst other things), with statements control deterministic cleanup, loops control iteration. That's what I mean by "separation of concerns" in relation to these aspects of the language design and it's a *good* thing (and one of the key reasons with statements behave like PEP 343, rather than being closer to Guido's original looping idea that is described in PEP 340).
Yes, separation of concerns is indeed a good thing and as Guido mentioned, there are already too many ways to do this.
Thanks for the enlightenment,