blob: 394ad5b7f06db2de528cafec5622e1827d2e7456 [file] [log] [blame]
# Copyright 2016 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import contextlib
import shutil
import tempfile
@contextlib.contextmanager
def NamedTemporaryDirectory(suffix='', prefix='tmp', dir=None):
"""A context manager that manages a temporary directory.
This is a context manager version of tempfile.mkdtemp. The arguments to this
function are the same as the arguments for that one.
This can be used to automatically manage the lifetime of a temporary file
without maintaining an open file handle on it. Doing so can be useful in
scenarios where a parent process calls a child process to create a temporary
file and then does something with the resulting file.
"""
# This uses |dir| as a parameter name for consistency with mkdtemp.
# pylint: disable=redefined-builtin
d = tempfile.mkdtemp(suffix=suffix, prefix=prefix, dir=dir)
try:
yield d
finally:
shutil.rmtree(d)