On Tue, Nov 19, 2019 at 5:47 AM Andrew Barnert via Python-ideas
<python-ideas@python.org> wrote:
> Unless there’s some case where you don’t want to close f at all, I don’t see 
> why you don’t want a context manager. For example, your return early case:
>
>     with open(filename) as f:
>         header = f.readline()
>         if something(header):
>             return
>         # use f
>
> … does exactly what you wanted, and also properly handles exceptions. Which 
> is the whole point of context managers.
>
> I suppose if you wanted to close f in some different way in some situations… 
> but there is no different way to close files.
>

There is one other common way you might want to close a file, and
that's "close it if I opened it, but otherwise don't". For example, if
you're given a file name to output into, then write to that file; but
otherwise, write to sys.stdout. I'm not sure what the best way to do
that is, other than ExitStack, which feels clunky (like using a while
loop to emulate a for loop - sure it works, but it feels wrong).

ChrisA
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/XLJ4TYF5BKIW4Y4CQTRJCWPEH6343MRH/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to