Temporary files and directories.
Contains replacement for tempfile.NamedTemporaryFile that does not delete
the file on close(), but still unlinks it after the context manager ends,
as well as a mkdtemp-based temporary directory implementation.
- Mostly reuses the stdlib implementations, supporting the same signatures.
- Due to that, uses the OS's built-in temporary file facilities, no custom schemes.
- Tested on Python 2.6+ and 3.3+
Usage
A typical use-case that is not possible with the regular
NamedTemporaryFile:
import volatile with volatile.file() as tmp: # tmp behaves like a regular NamedTemporaryFile here, except for that # it gets unlinked at the end of the context manager, instead of when # close() is called. tmp.close() # run the users $EDITOR run_editor(tmp.name) buf = open(tmp.name).read() # ...
Temporary directories:
import volatile with volatile.dir(): as dtmp: pass # ... can use directory here # a missing dtmp will not throw an exception!
Unix domain sockets:
import volatile with volatile.unix_socket(): as (sock, addr): # sock is the bound socket, addr its address on the filesystem pass # ... can use directory here
The source is fairly short and contains API docs in the comments.