| Georg Brandl | 116aa62 | 2007-08-15 14:28:22 +0000 | [diff] [blame^] | 1 |  | 
 | 2 | :mod:`tempfile` --- Generate temporary files and directories | 
 | 3 | ============================================================ | 
 | 4 |  | 
 | 5 | .. sectionauthor:: Zack Weinberg <zack@codesourcery.com> | 
 | 6 |  | 
 | 7 |  | 
 | 8 | .. module:: tempfile | 
 | 9 |    :synopsis: Generate temporary files and directories. | 
 | 10 |  | 
 | 11 |  | 
 | 12 | .. index:: | 
 | 13 |    pair: temporary; file name | 
 | 14 |    pair: temporary; file | 
 | 15 |  | 
 | 16 | This module generates temporary files and directories.  It works on all | 
 | 17 | supported platforms. | 
 | 18 |  | 
 | 19 | In version 2.3 of Python, this module was overhauled for enhanced security.  It | 
 | 20 | now provides three new functions, :func:`NamedTemporaryFile`, :func:`mkstemp`, | 
 | 21 | and :func:`mkdtemp`, which should eliminate all remaining need to use the | 
 | 22 | insecure :func:`mktemp` function.  Temporary file names created by this module | 
 | 23 | no longer contain the process ID; instead a string of six random characters is | 
 | 24 | used. | 
 | 25 |  | 
 | 26 | Also, all the user-callable functions now take additional arguments which allow | 
 | 27 | direct control over the location and name of temporary files.  It is no longer | 
 | 28 | necessary to use the global *tempdir* and *template* variables.  To maintain | 
 | 29 | backward compatibility, the argument order is somewhat odd; it is recommended to | 
 | 30 | use keyword arguments for clarity. | 
 | 31 |  | 
 | 32 | The module defines the following user-callable functions: | 
 | 33 |  | 
 | 34 |  | 
 | 35 | .. function:: TemporaryFile([mode='w+b'[, bufsize=-1[, suffix[, prefix[, dir]]]]]) | 
 | 36 |  | 
 | 37 |    Return a file (or file-like) object that can be used as a temporary storage | 
 | 38 |    area.  The file is created using :func:`mkstemp`. It will be destroyed as soon | 
 | 39 |    as it is closed (including an implicit close when the object is garbage | 
 | 40 |    collected).  Under Unix, the directory entry for the file is removed immediately | 
 | 41 |    after the file is created.  Other platforms do not support this; your code | 
 | 42 |    should not rely on a temporary file created using this function having or not | 
 | 43 |    having a visible name in the file system. | 
 | 44 |  | 
 | 45 |    The *mode* parameter defaults to ``'w+b'`` so that the file created can be read | 
 | 46 |    and written without being closed.  Binary mode is used so that it behaves | 
 | 47 |    consistently on all platforms without regard for the data that is stored. | 
 | 48 |    *bufsize* defaults to ``-1``, meaning that the operating system default is used. | 
 | 49 |  | 
 | 50 |    The *dir*, *prefix* and *suffix* parameters are passed to :func:`mkstemp`. | 
 | 51 |  | 
 | 52 |  | 
 | 53 | .. function:: NamedTemporaryFile([mode='w+b'[, bufsize=-1[, suffix[, prefix[, dir[, delete]]]]]]) | 
 | 54 |  | 
 | 55 |    This function operates exactly as :func:`TemporaryFile` does, except that the | 
 | 56 |    file is guaranteed to have a visible name in the file system (on Unix, the | 
 | 57 |    directory entry is not unlinked).  That name can be retrieved from the | 
 | 58 |    :attr:`name` member of the file object.  Whether the name can be used to open | 
 | 59 |    the file a second time, while the named temporary file is still open, varies | 
 | 60 |    across platforms (it can be so used on Unix; it cannot on Windows NT or later). | 
 | 61 |    If *delete* is true (the default), the file is deleted as soon as it is closed. | 
 | 62 |  | 
 | 63 |    .. versionadded:: 2.3 | 
 | 64 |  | 
 | 65 |    .. versionadded:: 2.6 | 
 | 66 |       The *delete* parameter. | 
 | 67 |  | 
 | 68 |  | 
 | 69 | .. function:: SpooledTemporaryFile([max_size=0, [mode='w+b'[, bufsize=-1[, suffix[, prefix[, dir]]]]]]) | 
 | 70 |  | 
 | 71 |    This function operates exactly as :func:`TemporaryFile` does, except that data | 
 | 72 |    is spooled in memory until the file size exceeds *max_size*, or until the file's | 
 | 73 |    :func:`fileno` method is called, at which point the contents are written to disk | 
 | 74 |    and operation proceeds as with :func:`TemporaryFile`. | 
 | 75 |  | 
 | 76 |    The resulting file has one additional method, :func:`rollover`, which causes the | 
 | 77 |    file to roll over to an on-disk file regardless of its size. | 
 | 78 |  | 
 | 79 |    .. versionadded:: 2.6 | 
 | 80 |  | 
 | 81 |  | 
 | 82 | .. function:: mkstemp([suffix[, prefix[, dir[, text]]]]) | 
 | 83 |  | 
 | 84 |    Creates a temporary file in the most secure manner possible.  There are no | 
 | 85 |    race conditions in the file's creation, assuming that the platform properly | 
 | 86 |    implements the :const:`os.O_EXCL` flag for :func:`os.open`.  The file is | 
 | 87 |    readable and writable only by the creating user ID.  If the platform uses | 
 | 88 |    permission bits to indicate whether a file is executable, the file is | 
 | 89 |    executable by no one.  The file descriptor is not inherited by child | 
 | 90 |    processes. | 
 | 91 |  | 
 | 92 |    Unlike :func:`TemporaryFile`, the user of :func:`mkstemp` is responsible for | 
 | 93 |    deleting the temporary file when done with it. | 
 | 94 |  | 
 | 95 |    If *suffix* is specified, the file name will end with that suffix, otherwise | 
 | 96 |    there will be no suffix.  :func:`mkstemp` does not put a dot between the file | 
 | 97 |    name and the suffix; if you need one, put it at the beginning of *suffix*. | 
 | 98 |  | 
 | 99 |    If *prefix* is specified, the file name will begin with that prefix; otherwise, | 
 | 100 |    a default prefix is used. | 
 | 101 |  | 
 | 102 |    If *dir* is specified, the file will be created in that directory; otherwise, | 
 | 103 |    a default directory is used.  The default directory is chosen from a | 
 | 104 |    platform-dependent list, but the user of the application can control the | 
 | 105 |    directory location by setting the *TMPDIR*, *TEMP* or *TMP* environment | 
 | 106 |    variables.  There is thus no guarantee that the generated filename will have | 
 | 107 |    any nice properties, such as not requiring quoting when passed to external | 
 | 108 |    commands via ``os.popen()``. | 
 | 109 |  | 
 | 110 |    If *text* is specified, it indicates whether to open the file in binary mode | 
 | 111 |    (the default) or text mode.  On some platforms, this makes no difference. | 
 | 112 |  | 
 | 113 |    :func:`mkstemp` returns a tuple containing an OS-level handle to an open file | 
 | 114 |    (as would be returned by :func:`os.open`) and the absolute pathname of that | 
 | 115 |    file, in that order. | 
 | 116 |  | 
 | 117 |    .. versionadded:: 2.3 | 
 | 118 |  | 
 | 119 |  | 
 | 120 | .. function:: mkdtemp([suffix[, prefix[, dir]]]) | 
 | 121 |  | 
 | 122 |    Creates a temporary directory in the most secure manner possible. There are no | 
 | 123 |    race conditions in the directory's creation.  The directory is readable, | 
 | 124 |    writable, and searchable only by the creating user ID. | 
 | 125 |  | 
 | 126 |    The user of :func:`mkdtemp` is responsible for deleting the temporary directory | 
 | 127 |    and its contents when done with it. | 
 | 128 |  | 
 | 129 |    The *prefix*, *suffix*, and *dir* arguments are the same as for :func:`mkstemp`. | 
 | 130 |  | 
 | 131 |    :func:`mkdtemp` returns the absolute pathname of the new directory. | 
 | 132 |  | 
 | 133 |    .. versionadded:: 2.3 | 
 | 134 |  | 
 | 135 |  | 
 | 136 | .. function:: mktemp([suffix[, prefix[, dir]]]) | 
 | 137 |  | 
 | 138 |    .. deprecated:: 2.3 | 
 | 139 |       Use :func:`mkstemp` instead. | 
 | 140 |  | 
 | 141 |    Return an absolute pathname of a file that did not exist at the time the call is | 
 | 142 |    made.  The *prefix*, *suffix*, and *dir* arguments are the same as for | 
 | 143 |    :func:`mkstemp`. | 
 | 144 |  | 
 | 145 |    .. warning:: | 
 | 146 |  | 
 | 147 |       Use of this function may introduce a security hole in your program.  By the time | 
 | 148 |       you get around to doing anything with the file name it returns, someone else may | 
 | 149 |       have beaten you to the punch. | 
 | 150 |  | 
 | 151 | The module uses two global variables that tell it how to construct a temporary | 
 | 152 | name.  They are initialized at the first call to any of the functions above. | 
 | 153 | The caller may change them, but this is discouraged; use the appropriate | 
 | 154 | function arguments, instead. | 
 | 155 |  | 
 | 156 |  | 
 | 157 | .. data:: tempdir | 
 | 158 |  | 
 | 159 |    When set to a value other than ``None``, this variable defines the default value | 
 | 160 |    for the *dir* argument to all the functions defined in this module. | 
 | 161 |  | 
 | 162 |    If ``tempdir`` is unset or ``None`` at any call to any of the above functions, | 
 | 163 |    Python searches a standard list of directories and sets *tempdir* to the first | 
 | 164 |    one which the calling user can create files in.  The list is: | 
 | 165 |  | 
 | 166 |    #. The directory named by the :envvar:`TMPDIR` environment variable. | 
 | 167 |  | 
 | 168 |    #. The directory named by the :envvar:`TEMP` environment variable. | 
 | 169 |  | 
 | 170 |    #. The directory named by the :envvar:`TMP` environment variable. | 
 | 171 |  | 
 | 172 |    #. A platform-specific location: | 
 | 173 |  | 
 | 174 |       * On RiscOS, the directory named by the :envvar:`Wimp$ScrapDir` environment | 
 | 175 |         variable. | 
 | 176 |  | 
 | 177 |       * On Windows, the directories :file:`C:\\TEMP`, :file:`C:\\TMP`, | 
 | 178 |         :file:`\\TEMP`, and :file:`\\TMP`, in that order. | 
 | 179 |  | 
 | 180 |       * On all other platforms, the directories :file:`/tmp`, :file:`/var/tmp`, and | 
 | 181 |         :file:`/usr/tmp`, in that order. | 
 | 182 |  | 
 | 183 |    #. As a last resort, the current working directory. | 
 | 184 |  | 
 | 185 |  | 
 | 186 | .. function:: gettempdir() | 
 | 187 |  | 
 | 188 |    Return the directory currently selected to create temporary files in. If | 
 | 189 |    :data:`tempdir` is not ``None``, this simply returns its contents; otherwise, | 
 | 190 |    the search described above is performed, and the result returned. | 
 | 191 |  | 
 | 192 |  | 
 | 193 | .. data:: template | 
 | 194 |  | 
 | 195 |    .. deprecated:: 2.0 | 
 | 196 |       Use :func:`gettempprefix` instead. | 
 | 197 |  | 
 | 198 |    When set to a value other than ``None``, this variable defines the prefix of the | 
 | 199 |    final component of the filenames returned by :func:`mktemp`.  A string of six | 
 | 200 |    random letters and digits is appended to the prefix to make the filename unique. | 
 | 201 |    On Windows, the default prefix is :file:`~T`; on all other systems it is | 
 | 202 |    :file:`tmp`. | 
 | 203 |  | 
 | 204 |    Older versions of this module used to require that ``template`` be set to | 
 | 205 |    ``None`` after a call to :func:`os.fork`; this has not been necessary since | 
 | 206 |    version 1.5.2. | 
 | 207 |  | 
 | 208 |  | 
 | 209 | .. function:: gettempprefix() | 
 | 210 |  | 
 | 211 |    Return the filename prefix used to create temporary files.  This does not | 
 | 212 |    contain the directory component.  Using this function is preferred over reading | 
 | 213 |    the *template* variable directly. | 
 | 214 |  | 
 | 215 |    .. versionadded:: 1.5.2 | 
 | 216 |  |