This module generates temporary files and directories. It works on all supported platforms.
In version 2.3 of Python, this module was overhauled for enhanced security. It now provides
three new functions, NamedTemporaryFile(), mkstemp(),
and mkdtemp(), which should eliminate all remaining need to use the
insecure mktemp() function. Temporary file names created by this
module no longer contain the process ID; instead a string of six random characters is used.
Also, all the user-callable functions now take additional arguments which allow direct
control over the location and name of temporary files. It is no longer necessary to use the
global tempdir and template variables. To maintain backward
compatibility, the argument order is somewhat odd; it is recommended to use keyword arguments
The module defines the following user-callable functions:
suffix][, prefix][, dir])
- Return a file (or file-like) object that can be used as a temporary storage area. The
file is created using mkstemp. It will be destroyed as soon as
it is closed (including an implicit close when the object is garbage collected). Under Unix, the directory entry for the file is removed
immediately after the file is created. Other platforms do not support this; your code
should not rely on a temporary file created using this function having or not having a
visible name in the file system.
The mode parameter defaults to
'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. bufsize
-1, meaning that the operating system default is used.
The dir, prefix and suffix parameters are passed to mkstemp().
suffix][, prefix][, dir])
- This function operates exactly as TemporaryFile() does, except
that the file is guaranteed to have a visible name in the file system (on Unix, the directory entry is not unlinked). That
name can be retrieved from the name member of the file object.
Whether the name can be used to open the file a second time, while the named temporary
file is still open, varies across platforms (it can be so used on Unix; it cannot on Windows NT or later). New in version 2.3.
||[suffix][, prefix][, dir][,
- Creates a temporary file in the most secure manner possible. There are no race
conditions in the file's creation, assuming that the platform properly implements the O_EXCL flag for os.open(). The file is
readable and writable only by the creating user ID. If the platform uses permission bits
to indicate whether a file is executable, the file is executable by no one. The file
descriptor is not inherited by child processes.
Unlike TemporaryFile(), the user of mkstemp()
is responsible for deleting the temporary file when done with it.
If suffix is specified, the file name will end with that suffix, otherwise
there will be no suffix. mkstemp() does not put a dot between
the file name and the suffix; if you need one, put it at the beginning of suffix.
If prefix is specified, the file name will begin with that prefix;
otherwise, a default prefix is used.
If dir is specified, the file will be created in that directory; otherwise,
a default directory is used.
If text is specified, it indicates whether to open the file in binary mode
(the default) or text mode. On some platforms, this makes no difference.
mkstemp() returns a tuple containing an OS-level handle to an
open file (as would be returned by os.open()) and the absolute
pathname of that file, in that order. New in version 2.3.
||[suffix][, prefix][, dir])
- Creates a temporary directory in the most secure manner possible. There are no race
conditions in the directory's creation. The directory is readable, writable, and
searchable only by the creating user ID.
The user of mkdtemp() is responsible for deleting the
temporary directory and its contents when done with it.
The prefix, suffix, and dir arguments are the same as
mkdtemp() returns the absolute pathname of the new directory.
New in version 2.3.
||[suffix][, prefix][, dir])
Deprecated since release 2.3. Use mkstemp() instead.
Return an absolute pathname of a file that did not exist at the time the call is made. The
prefix, suffix, and dir arguments are the same as for mkstemp().
Warning: Use of this function may introduce
a security hole in your program. By the time you get around to doing anything with the
file name it returns, someone else may have beaten you to the punch.
The module uses two global variables that tell it how to construct a temporary name. They
are initialized at the first call to any of the functions above. The caller may change them,
but this is discouraged; use the appropriate function arguments, instead.
- When set to a value other than
None, this variable defines the default
value for the dir argument to all the functions defined in this module.
If tempdir is unset or
None at any call to any of the above
functions, Python searches a standard list of directories and sets tempdir to
the first one which the calling user can create files in. The list is:
- The directory named by the TMPDIR environment
- The directory named by the TEMP environment
- The directory named by the TMP environment
- A platform-specific location:
- On Macintosh, the Temporary Items folder.
- On RiscOS, the directory named by the Wimp$ScrapDir
- On Windows, the directories C:TEMP,
TMP, in that order.
- On all other platforms, the directories /tmp, /var/tmp, and /usr/tmp, in that
- As a last resort, the current working directory.
- Return the directory currently selected to create temporary files in. If tempdir
is not None, this simply returns its contents; otherwise, the search described above is
performed, and the result returned.
Deprecated since release 2.0. Use gettempprefix()
When set to a value other than
None, this variable defines the prefix of the
final component of the filenames returned by mktemp(). A string
of six random letters and digits is appended to the prefix to make the filename unique. On
Windows, the default prefix is ~T; on all other systems it is tmp.
Older versions of this module used to require that
template be set to
after a call to os.fork(); this has not been necessary since
- Return the filename prefix used to create temporary files. This does not contain the
directory component. Using this function is preferred over reading the template
variable directly. New in version 1.5.2.