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