On 2013-11-28 03:58, Steven D'Aprano wrote: >> input = open(self.full_path) >> output = open(self.output_csv, 'ab') >> with input as input, output as output: >> ... > > That's really clever! Why didn't I think of that?
Because if the 2nd output fails, the input doesn't get closed as it {w,sh}ould in a with-statement? :-) You could work around this with: from functools import partial in_ = partial(open, self.full_path) out_ = partial(open, self.output_csv, 'ab') with in_() as input, out_() as output: do_stuff() There's still room for programmer error if you don't have an "output_csv" property on self and you get an AttributeError, but that's more of a "dumb programmer error" rather than an actual runtime exception. -tkc -- https://mail.python.org/mailman/listinfo/python-list