Python Temporary Files and Directories
External
Internal
Auto-Deleting Temporary Files and Directories
TemporaryFile
, NamedTemporaryFile
and TemporaryDirectory
are classes that provide temporary files and directories that, in conjunction with the with
reserved word, are self-deleting when we the program gets out of scope.
Auto-Deleting Temporary File
A TemporaryFile
behaves "file-like", by exposing a file oriented-API to the underlying storage. NamedTemporaryFile
is similar to TemporaryFile
, except that the underlying file is guaranteed to have a visible name in the file system.
For NamedTemporaryFile
, the underlying file system path can be obtained with the name
property.
The underlying file system file will be deleted as soon as the NamedTemporaryFile
object is closed, if delete
is true
(the default). The object is automatically closed when the control exits the context:
from pathlib import Path
from tempfile import NamedTemporaryFile
content = 'something'
with NamedTemporaryFile(mode='w+t') as tf:
temp_file_path = tf.name
tf.write(content)
tf.flush()
# open the temporary file from the file system
with open(temp_file_path, 'r+t') as f:
content_from_file_system = f.read()
assert content == content_from_file_system
assert Path(temp_file_path).is_file()
#
# the file will be deleted out of scope
#
assert not Path(temp_file_path).is_file()
Auto-Deleting Temporary Directory
Temporary Files and Directories to be Deleted by the Caller
Temporary File to be Deleted by the Caller
Temporary Directory to be Deleted by the Caller
Create a named temporary file, write in it and return the name. The file is not automatically deleted after close()
, the caller will need to delete it:
import tempfile
with tempfile.NamedTemporaryFile(mode='w+t', delete=False) as t:
t.write(something)
return t.name