blob: 74c032ff2767f3d371492d552f6d22a83e796f2f [file] [log] [blame]
Georg Brandl116aa622007-08-15 14:28:22 +00001
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
16This module generates temporary files and directories. It works on all
17supported platforms.
18
19In version 2.3 of Python, this module was overhauled for enhanced security. It
20now provides three new functions, :func:`NamedTemporaryFile`, :func:`mkstemp`,
21and :func:`mkdtemp`, which should eliminate all remaining need to use the
22insecure :func:`mktemp` function. Temporary file names created by this module
23no longer contain the process ID; instead a string of six random characters is
24used.
25
26Also, all the user-callable functions now take additional arguments which allow
27direct control over the location and name of temporary files. It is no longer
28necessary to use the global *tempdir* and *template* variables. To maintain
29backward compatibility, the argument order is somewhat odd; it is recommended to
30use keyword arguments for clarity.
31
32The 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
Georg Brandl116aa622007-08-15 14:28:22 +000063
64.. function:: SpooledTemporaryFile([max_size=0, [mode='w+b'[, bufsize=-1[, suffix[, prefix[, dir]]]]]])
65
66 This function operates exactly as :func:`TemporaryFile` does, except that data
67 is spooled in memory until the file size exceeds *max_size*, or until the file's
68 :func:`fileno` method is called, at which point the contents are written to disk
69 and operation proceeds as with :func:`TemporaryFile`.
70
71 The resulting file has one additional method, :func:`rollover`, which causes the
72 file to roll over to an on-disk file regardless of its size.
73
Georg Brandl116aa622007-08-15 14:28:22 +000074
75.. function:: mkstemp([suffix[, prefix[, dir[, text]]]])
76
77 Creates a temporary file in the most secure manner possible. There are no
78 race conditions in the file's creation, assuming that the platform properly
79 implements the :const:`os.O_EXCL` flag for :func:`os.open`. The file is
80 readable and writable only by the creating user ID. If the platform uses
81 permission bits to indicate whether a file is executable, the file is
82 executable by no one. The file descriptor is not inherited by child
83 processes.
84
85 Unlike :func:`TemporaryFile`, the user of :func:`mkstemp` is responsible for
86 deleting the temporary file when done with it.
87
88 If *suffix* is specified, the file name will end with that suffix, otherwise
89 there will be no suffix. :func:`mkstemp` does not put a dot between the file
90 name and the suffix; if you need one, put it at the beginning of *suffix*.
91
92 If *prefix* is specified, the file name will begin with that prefix; otherwise,
93 a default prefix is used.
94
95 If *dir* is specified, the file will be created in that directory; otherwise,
96 a default directory is used. The default directory is chosen from a
97 platform-dependent list, but the user of the application can control the
98 directory location by setting the *TMPDIR*, *TEMP* or *TMP* environment
99 variables. There is thus no guarantee that the generated filename will have
100 any nice properties, such as not requiring quoting when passed to external
101 commands via ``os.popen()``.
102
103 If *text* is specified, it indicates whether to open the file in binary mode
104 (the default) or text mode. On some platforms, this makes no difference.
105
106 :func:`mkstemp` returns a tuple containing an OS-level handle to an open file
107 (as would be returned by :func:`os.open`) and the absolute pathname of that
108 file, in that order.
109
Georg Brandl116aa622007-08-15 14:28:22 +0000110
111.. function:: mkdtemp([suffix[, prefix[, dir]]])
112
113 Creates a temporary directory in the most secure manner possible. There are no
114 race conditions in the directory's creation. The directory is readable,
115 writable, and searchable only by the creating user ID.
116
117 The user of :func:`mkdtemp` is responsible for deleting the temporary directory
118 and its contents when done with it.
119
120 The *prefix*, *suffix*, and *dir* arguments are the same as for :func:`mkstemp`.
121
122 :func:`mkdtemp` returns the absolute pathname of the new directory.
123
Georg Brandl116aa622007-08-15 14:28:22 +0000124
125.. function:: mktemp([suffix[, prefix[, dir]]])
126
127 .. deprecated:: 2.3
128 Use :func:`mkstemp` instead.
129
130 Return an absolute pathname of a file that did not exist at the time the call is
131 made. The *prefix*, *suffix*, and *dir* arguments are the same as for
132 :func:`mkstemp`.
133
134 .. warning::
135
136 Use of this function may introduce a security hole in your program. By the time
137 you get around to doing anything with the file name it returns, someone else may
138 have beaten you to the punch.
139
140The module uses two global variables that tell it how to construct a temporary
141name. They are initialized at the first call to any of the functions above.
142The caller may change them, but this is discouraged; use the appropriate
143function arguments, instead.
144
145
146.. data:: tempdir
147
148 When set to a value other than ``None``, this variable defines the default value
149 for the *dir* argument to all the functions defined in this module.
150
151 If ``tempdir`` is unset or ``None`` at any call to any of the above functions,
152 Python searches a standard list of directories and sets *tempdir* to the first
153 one which the calling user can create files in. The list is:
154
155 #. The directory named by the :envvar:`TMPDIR` environment variable.
156
157 #. The directory named by the :envvar:`TEMP` environment variable.
158
159 #. The directory named by the :envvar:`TMP` environment variable.
160
161 #. A platform-specific location:
162
Georg Brandl116aa622007-08-15 14:28:22 +0000163 * On Windows, the directories :file:`C:\\TEMP`, :file:`C:\\TMP`,
164 :file:`\\TEMP`, and :file:`\\TMP`, in that order.
165
166 * On all other platforms, the directories :file:`/tmp`, :file:`/var/tmp`, and
167 :file:`/usr/tmp`, in that order.
168
169 #. As a last resort, the current working directory.
170
171
172.. function:: gettempdir()
173
174 Return the directory currently selected to create temporary files in. If
175 :data:`tempdir` is not ``None``, this simply returns its contents; otherwise,
176 the search described above is performed, and the result returned.
177
178
179.. data:: template
180
181 .. deprecated:: 2.0
182 Use :func:`gettempprefix` instead.
183
184 When set to a value other than ``None``, this variable defines the prefix of the
185 final component of the filenames returned by :func:`mktemp`. A string of six
186 random letters and digits is appended to the prefix to make the filename unique.
187 On Windows, the default prefix is :file:`~T`; on all other systems it is
188 :file:`tmp`.
189
190 Older versions of this module used to require that ``template`` be set to
191 ``None`` after a call to :func:`os.fork`; this has not been necessary since
192 version 1.5.2.
193
194
195.. function:: gettempprefix()
196
197 Return the filename prefix used to create temporary files. This does not
198 contain the directory component. Using this function is preferred over reading
199 the *template* variable directly.
200