On Sun, Feb 3, 2013 at 6:26 AM, Nick Coghlan <ncoghlan@gmail.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,