cpython-withatomic / Doc / libtempfile.tex

The branch 'legacy-trunk' does not exist.
\section{Standard Module \sectcode{tempfile}}
\indexii{temporary}{file name}

\renewcommand{\indexsubitem}{(in module tempfile)}

This module generates temporary file names.  It is not \UNIX{} specific,
but it may require some help on non-\UNIX{} systems.

Note: the modules does not create temporary files, nor does it
automatically remove them when the current process exits or dies.

The module defines a single user-callable function:

Return a unique temporary filename.  This is an absolute pathname of a
file that does not exist at the time the call is made.  No two calls
will return the same filename.

The module uses two global variables that tell it how to construct a
temporary name.  The caller may assign values to them; by default they
are initialized at the first call to \code{mktemp()}.

When set to a value other than \code{None}, this variable defines the
directory in which filenames returned by \code{mktemp()} reside.  The
default is taken from the environment variable \code{TMPDIR}; if this
is not set, either \code{/usr/tmp} is used (on \UNIX{}), or the current
working directory (all other systems).  No check is made to see
whether its value is valid.

When set to a value other than \code{None}, this variable defines the
prefix of the final component of the filenames returned by
\code{mktemp()}.  A string of decimal digits is added to generate
unique filenames.  The default is either ``\code{@\var{pid}.}'' where
\var{pid} is the current process ID (on \UNIX{}), or ``\code{tmp}'' (all
other systems).

Warning: if a \UNIX{} process uses \code{mktemp()}, then calls
\code{fork()} and both parent and child continue to use
\code{mktemp()}, the processes will generate conflicting temporary
names.  To resolve this, the child process should assign \code{None}
to \code{template}, to force recomputing the default on the next call
to \code{mktemp()}.