mirror of
https://github.com/python/cpython.git
synced 2024-11-30 18:51:15 +01:00
b80a777859
Deprecated direct access to template. Added note about past need to modify template so that legacy code has a better chance of being understood, noting that the requirement to reset template after os.fork() disappeared in 1.5.2.
79 lines
3.5 KiB
TeX
79 lines
3.5 KiB
TeX
\section{\module{tempfile} ---
|
|
Generate temporary file names}
|
|
|
|
\declaremodule{standard}{tempfile}
|
|
\modulesynopsis{Generate temporary file names.}
|
|
|
|
\indexii{temporary}{file name}
|
|
\indexii{temporary}{file}
|
|
|
|
|
|
This module generates temporary file names. It is not \UNIX{} specific,
|
|
but it may require some help on non-\UNIX{} systems.
|
|
|
|
The module defines the following user-callable functions:
|
|
|
|
\begin{funcdesc}{mktemp}{\optional{suffix}}
|
|
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. \var{suffix}, if provided, is used as
|
|
the last part of the generated file name. This can be used to provide
|
|
a filename extension or other identifying information that may be
|
|
useful on some platforms.
|
|
\end{funcdesc}
|
|
|
|
\begin{funcdesc}{TemporaryFile}{\optional{mode\optional{,
|
|
bufsize\optional{, suffix}}}}
|
|
Return a file (or file-like) object that can be used as a temporary
|
|
storage area. The file is created in the most secure manner available
|
|
in the appporpriate temporary directory for the host platform. Under
|
|
\UNIX, the directory entry to the file is removed so that it is secure
|
|
against attacks which involve creating symbolic links to the file or
|
|
replacing the file with a symbolic link to some other file. For other
|
|
platforms, which don't allow removing the directory entry while the
|
|
file is in use, the file is automatically deleted as soon as it is
|
|
closed (including an implicit close when it is garbage-collected).
|
|
|
|
The \var{mode} parameter defaults to \code{'w+b'} so that the file
|
|
created can be read and written without being closed. Binary mode is
|
|
used so that it behaves consistently on all platforms without regard
|
|
for the data that is stored. \var{bufsize} defaults to \code{-1},
|
|
meaning that the operating system default is used. \var{suffix} is
|
|
passed to \function{mktemp()}.
|
|
\end{funcdesc}
|
|
|
|
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 \function{mktemp()}.
|
|
|
|
\begin{datadesc}{tempdir}
|
|
When set to a value other than \code{None}, this variable defines the
|
|
directory in which filenames returned by \function{mktemp()} reside.
|
|
The default is taken from the environment variable \envvar{TMPDIR}; if
|
|
this is not set, either \file{/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.
|
|
\end{datadesc}
|
|
|
|
\begin{funcdesc}{gettempprefix}{}
|
|
Return the filename prefix used to create temporary files. This does
|
|
not contain the directory component. Using this function is preferred
|
|
over using the \code{template} variable directly.
|
|
\versionadded{1.5.2}
|
|
\end{funcdesc}
|
|
|
|
\begin{datadesc}{template}
|
|
\deprecated{1.6}{Use \function{gettempprefix()} instead.}
|
|
When set to a value other than \code{None}, this variable defines the
|
|
prefix of the final component of the filenames returned by
|
|
\function{mktemp()}. A string of decimal digits is added to generate
|
|
unique filenames. The default is either \file{@\var{pid}.} where
|
|
\var{pid} is the current process ID (on \UNIX{}),
|
|
\file{\textasciitilde\var{pid}-} on Windows NT, \file{Python-Tmp-} on
|
|
MacOS, or \file{tmp} (all other systems).
|
|
|
|
Older versions of this module used to require that \code{template} be
|
|
set to \code{None} after a call to \function{os.fork()}; this has not
|
|
been necessary since version 1.5.2.
|
|
\end{datadesc}
|