blob: f7304aec8167b15f67d73ab14986f56dcb777c75 [file] [log] [blame]
Guido van Rossum470be141995-03-17 16:07:09 +00001\section{Standard Module \sectcode{tempfile}}
Guido van Rossume47da0a1997-07-17 16:34:52 +00002\label{module-tempfile}
Guido van Rossum81b30601995-03-01 14:36:00 +00003\stmodindex{tempfile}
4\indexii{temporary}{file name}
5\indexii{temporary}{file}
6
7\renewcommand{\indexsubitem}{(in module tempfile)}
8
Guido van Rossum6bb1adc1995-03-13 10:03:32 +00009This module generates temporary file names. It is not \UNIX{} specific,
10but it may require some help on non-\UNIX{} systems.
Guido van Rossum81b30601995-03-01 14:36:00 +000011
12Note: the modules does not create temporary files, nor does it
13automatically remove them when the current process exits or dies.
14
15The module defines a single user-callable function:
16
17\begin{funcdesc}{mktemp}{}
18Return a unique temporary filename. This is an absolute pathname of a
19file that does not exist at the time the call is made. No two calls
20will return the same filename.
21\end{funcdesc}
22
23The module uses two global variables that tell it how to construct a
24temporary name. The caller may assign values to them; by default they
25are initialized at the first call to \code{mktemp()}.
26
27\begin{datadesc}{tempdir}
28When set to a value other than \code{None}, this variable defines the
29directory in which filenames returned by \code{mktemp()} reside. The
30default is taken from the environment variable \code{TMPDIR}; if this
Fred Drake12d9da51998-01-09 22:30:32 +000031is not set, either \file{/usr/tmp} is used (on \UNIX{}), or the current
Guido van Rossum81b30601995-03-01 14:36:00 +000032working directory (all other systems). No check is made to see
33whether its value is valid.
34\end{datadesc}
35\ttindex{TMPDIR}
36
37\begin{datadesc}{template}
38When set to a value other than \code{None}, this variable defines the
39prefix of the final component of the filenames returned by
40\code{mktemp()}. A string of decimal digits is added to generate
Fred Drake12d9da51998-01-09 22:30:32 +000041unique filenames. The default is either \file{@\var{pid}.} where
42\var{pid} is the current process ID (on \UNIX{}), or \file{tmp} (all
Guido van Rossum81b30601995-03-01 14:36:00 +000043other systems).
44\end{datadesc}
45
Guido van Rossum6bb1adc1995-03-13 10:03:32 +000046Warning: if a \UNIX{} process uses \code{mktemp()}, then calls
Guido van Rossum81b30601995-03-01 14:36:00 +000047\code{fork()} and both parent and child continue to use
48\code{mktemp()}, the processes will generate conflicting temporary
49names. To resolve this, the child process should assign \code{None}
50to \code{template}, to force recomputing the default on the next call
51to \code{mktemp()}.