On Sat, Nov 16, 2019 at 9:44 AM Oscar Benjamin <oscar.j.benja...@gmail.com> wrote: > > On Fri, 15 Nov 2019 at 12:04, Serhiy Storchaka <storch...@gmail.com> wrote: > > > > 15.11.19 12:40, Jonathan Fine пише: > > > The original poster wanted, inside 'with' context management, to open > > > several files. Context management is, roughly speaking, deferred > > > execution wrapped in a try ... except .... statement. > > > > In case of open() there is no deferred execution. The resource is > > acquired in open(), not in __enter__(). > > I've often thought that this was the root of various awkwardnesses > with context managers. Ideally a well-behaved context manager would > only use __exit__ to clean up after __enter__ but open doesn't do > that. The nested context manager was designed for this type of > well-behaved context manager but was then considered harmful because > open (one of the most common context managers) misbehaves. > > Maybe some of these things could be simpler if it was clarified that a > context manager shouldn't acquire resource before __enter__ and a new > version of open was provided. >
Hmm. What exactly is the object that you have prior to the file being opened? It can't simply be a File, because you need to specify parameters to the open() call. Is it a "file ready to be opened"? What's the identity of that? 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/P27KUKAWOX5NPKX3UQLZLWMHCFLPNIKT/ Code of Conduct: http://python.org/psf/codeofconduct/