On 4/8/2021 4:43 PM, Antoine Pitrou wrote:
On Thu, 8 Apr 2021 13:31:26 -0700
Ethan Furman <et...@stoneleaf.us> wrote:
```python
from tempfile import NamedTemporaryFile

with NamedTemporaryFile() as fp:
      fp.write(b'some data')
      fp.close()  # Windows workaround
      fp.open()
      data = fp.read()

assert data == 'some_data'
```

The problem is that, even though `fp.open()` is still inside the context 
manager, the `close()` call deletes the file
[2].  To handle this scenario, my proposal is two-fold:

1) stop using the TEMPFILE OS attribute so the OS doesn't delete the file on 
close
2) add `.open()` to NamedTemporaryFile
Instead, you could add a dedicated `.reopen()`?

I think capturing the intent is important, rather than just putting .close() followed by .open(). Maybe a name that embodies "reopen for reading without deleting" would make the intent clear? Maybe .reopen() already captures that. Anyway, +1 for a method that combines the close/open.

Eric

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

Reply via email to