<br><br><div class="gmail_quote">On 9 September 2010 14:53, M.-A. Lemburg <span dir="ltr"><<a href="mailto:mal@egenix.com" target="_blank">mal@egenix.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

<div>Michael Foord wrote:<br>
> On 9 September 2010 14:32, M.-A. Lemburg <<a href="mailto:mal@egenix.com" target="_blank">mal@egenix.com</a>> wrote:<br>
><br>
>> [snip...]<br>
>> Why do you need to put everything on one line ?<br>
>><br>
>> afh = open(args.actual, encoding="utf-8")<br>
>> efh = open(args.expected, encoding="utf-8")<br>
>><br>
>> with afh, efh:<br>
>>   ...<br>
>><br>
>> In the context of files, the only purpose of the with statement<br>
>> is to close them when leaving the block.<br>
>><br>
>>>>> a = open('/etc/passwd')<br>
>>>>> b = open('/etc/group')<br>
>><br>
><br>
> If my understanding is correct (which is perhaps unlikely...), using a<br>
> single line will close a if opening b fails. Whereas doing them separately<br>
> before the with statement risks leaving the first un-exited if creating the<br>
> second fails.<br>
<br>
</div>Right, but if you stuff everything on a single line, your<br>
error handling will have a hard time figuring out which of<br>
the two failed to open.<br></blockquote><div><br>If you *need* to distinguish at a higher level then you have no choice. I was really just pointing out that there are *semantic* differences as well, and in fact the code you posted is less safe than the one line version. You lose some of the error handling built-in to context manager creation.<br>
<br>Michael<br>
 <br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<br>
I was under the impression that Mark wanted to "protect" the<br>
inner block of the with statement, not the context manager<br>
creation itself.<br>
<br>
As usual: hiding away too much stuff in your closet makes things<br>
look tidy, but causes a hell of a mess if you ever need to open<br>
it again :-)<br>
<div><br>
> Michael<br>
><br>
><br>
>>>>> with a,b: print a.readline(), b.readline()<br>
>> ...<br>
>> at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/bash<br>
>> at:!:25:<br>
>><br>
>>>>> a<br>
>> <closed file '/etc/passwd', mode 'r' at 0x7f0093e62390><br>
>>>>> b<br>
>> <closed file '/etc/group', mode 'r' at 0x7f0093e62420><br>
>><br>
>> --<br>
>> Marc-Andre Lemburg<br>
>> eGenix.com<br>
>><br>
>> Professional Python Services directly from the Source  (#1, Sep 09 2010)<br>
>>>>> Python/Zope Consulting and Support ...        <a href="http://www.egenix.com/" target="_blank">http://www.egenix.com/</a><br>
>>>>> mxODBC.Zope.Database.Adapter ...             <a href="http://zope.egenix.com/" target="_blank">http://zope.egenix.com/</a><br>
>>>>> mxODBC, mxDateTime, mxTextTools ...        <a href="http://python.egenix.com/" target="_blank">http://python.egenix.com/</a><br>
>> ________________________________________________________________________<br>
>> 2010-08-19: Released mxODBC 3.1.0              <a href="http://python.egenix.com/" target="_blank">http://python.egenix.com/</a><br>
</div>>> 2010-09-15 <<a href="http://python.egenix.com/%0A2010-09-15" target="_blank">http://python.egenix.com/%0A2010-09-15</a>>: DZUG Tagung, Dresden,<br>
<div><div></div><div>>> Germany                   6 days to go<br>
>><br>
>> ::: Try our new mxODBC.Connect Python Database Interface for free ! ::::<br>
>><br>
>><br>
>>   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48<br>
>>    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg<br>
>>           Registered at Amtsgericht Duesseldorf: HRB 46611<br>
>>               <a href="http://www.egenix.com/company/contact/" target="_blank">http://www.egenix.com/company/contact/</a><br>
>> _______________________________________________<br>
>> Python-ideas mailing list<br>
>> <a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
>> <a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a><br>
>><br>
><br>
><br>
><br>
<br>
--<br>
Marc-Andre Lemburg<br>
eGenix.com<br>
<br>
Professional Python Services directly from the Source  (#1, Sep 09 2010)<br>
>>> Python/Zope Consulting and Support ...        <a href="http://www.egenix.com/" target="_blank">http://www.egenix.com/</a><br>
>>> mxODBC.Zope.Database.Adapter ...             <a href="http://zope.egenix.com/" target="_blank">http://zope.egenix.com/</a><br>
>>> mxODBC, mxDateTime, mxTextTools ...        <a href="http://python.egenix.com/" target="_blank">http://python.egenix.com/</a><br>
________________________________________________________________________<br>
2010-08-19: Released mxODBC 3.1.0              <a href="http://python.egenix.com/%0A2010-09-15" target="_blank">http://python.egenix.com/<br>
2010-09-15</a>: DZUG Tagung, Dresden, Germany                   6 days to go<br>
<br>
::: Try our new mxODBC.Connect Python Database Interface for free ! ::::<br>
<br>
<br>
   eGenix.com Software, Skills and Services GmbH  Pastor-Loeh-Str.48<br>
    D-40764 Langenfeld, Germany. CEO Dipl.-Math. Marc-Andre Lemburg<br>
           Registered at Amtsgericht Duesseldorf: HRB 46611<br>
               <a href="http://www.egenix.com/company/contact/" target="_blank">http://www.egenix.com/company/contact/</a><br>
_______________________________________________<br>
Python-ideas mailing list<br>
<a href="mailto:Python-ideas@python.org" target="_blank">Python-ideas@python.org</a><br>
<a href="http://mail.python.org/mailman/listinfo/python-ideas" target="_blank">http://mail.python.org/mailman/listinfo/python-ideas</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br><a href="http://www.voidspace.org.uk" target="_blank">http://www.voidspace.org.uk</a><br><br><br>