blob: 7363940d418a1e21afdf0ffa4b5d18f124b9fddc [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
Georg Brandle6bcc912008-05-12 18:05:20 +000017supported platforms. It provides three new functions,
18:func:`NamedTemporaryFile`, :func:`mkstemp`, and :func:`mkdtemp`, which should
19eliminate all remaining need to use the insecure :func:`mktemp` function.
20Temporary file names created by this module no longer contain the process ID;
21instead a string of six random characters is used.
Georg Brandl116aa622007-08-15 14:28:22 +000022
Christian Heimes81ee3ef2008-05-04 22:42:01 +000023Also, all the user-callable functions now take additional arguments which
24allow direct control over the location and name of temporary files. It is
25no longer necessary to use the global *tempdir* and *template* variables.
26To maintain backward compatibility, the argument order is somewhat odd; it
27is recommended to use keyword arguments for clarity.
Georg Brandl116aa622007-08-15 14:28:22 +000028
29The module defines the following user-callable functions:
30
31
Christian Heimes81ee3ef2008-05-04 22:42:01 +000032.. function:: TemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]])
Georg Brandl116aa622007-08-15 14:28:22 +000033
Christian Heimes81ee3ef2008-05-04 22:42:01 +000034 Return a file-like object that can be used as a temporary storage area.
35 The file is created using :func:`mkstemp`. It will be destroyed as soon
Georg Brandl116aa622007-08-15 14:28:22 +000036 as it is closed (including an implicit close when the object is garbage
Christian Heimes81ee3ef2008-05-04 22:42:01 +000037 collected). Under Unix, the directory entry for the file is removed
38 immediately after the file is created. Other platforms do not support
39 this; your code should not rely on a temporary file created using this
40 function having or not having a visible name in the file system.
Georg Brandl116aa622007-08-15 14:28:22 +000041
Christian Heimes81ee3ef2008-05-04 22:42:01 +000042 The *mode* parameter defaults to ``'w+b'`` so that the file created can
43 be read and written without being closed. Binary mode is used so that it
44 behaves consistently on all platforms without regard for the data that is
45 stored. *bufsize* defaults to ``-1``, meaning that the operating system
46 default is used.
Georg Brandl116aa622007-08-15 14:28:22 +000047
48 The *dir*, *prefix* and *suffix* parameters are passed to :func:`mkstemp`.
49
Christian Heimes7f044312008-01-06 17:05:40 +000050 The returned object is a true file object on POSIX platforms. On other
51 platforms, it is a file-like object whose :attr:`file` attribute is the
Christian Heimes81ee3ef2008-05-04 22:42:01 +000052 underlying true file object. This file-like object can be used in a
Christian Heimes3ecfea712008-02-09 20:51:34 +000053 :keyword:`with` statement, just like a normal file.
Christian Heimes7f044312008-01-06 17:05:40 +000054
Georg Brandl116aa622007-08-15 14:28:22 +000055
Christian Heimes81ee3ef2008-05-04 22:42:01 +000056.. function:: NamedTemporaryFile([mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None[, delete=True]]]]]])
Georg Brandl116aa622007-08-15 14:28:22 +000057
Christian Heimes81ee3ef2008-05-04 22:42:01 +000058 This function operates exactly as :func:`TemporaryFile` does, except that
59 the file is guaranteed to have a visible name in the file system (on
60 Unix, the directory entry is not unlinked). That name can be retrieved
61 from the :attr:`name` member of the file object. Whether the name can be
62 used to open the file a second time, while the named temporary file is
63 still open, varies across platforms (it can be so used on Unix; it cannot
64 on Windows NT or later). If *delete* is true (the default), the file is
65 deleted as soon as it is closed.
66 The returned object is always a file-like object whose :attr:`file`
67 attribute is the underlying true file object. This file-like object can
68 be used in a :keyword:`with` statement, just like a normal file.
Georg Brandl116aa622007-08-15 14:28:22 +000069
Georg Brandl116aa622007-08-15 14:28:22 +000070
Christian Heimes81ee3ef2008-05-04 22:42:01 +000071.. function:: SpooledTemporaryFile([max_size=0, [mode='w+b'[, bufsize=-1[, suffix=''[, prefix='tmp'[, dir=None]]]]]])
Georg Brandl116aa622007-08-15 14:28:22 +000072
Christian Heimes81ee3ef2008-05-04 22:42:01 +000073 This function operates exactly as :func:`TemporaryFile` does, except that
74 data is spooled in memory until the file size exceeds *max_size*, or
75 until the file's :func:`fileno` method is called, at which point the
76 contents are written to disk and operation proceeds as with
77 :func:`TemporaryFile`.
Georg Brandl116aa622007-08-15 14:28:22 +000078
Christian Heimes81ee3ef2008-05-04 22:42:01 +000079 The resulting file has one additional method, :func:`rollover`, which
80 causes the file to roll over to an on-disk file regardless of its size.
Georg Brandl116aa622007-08-15 14:28:22 +000081
Christian Heimes81ee3ef2008-05-04 22:42:01 +000082 The returned object is a file-like object whose :attr:`_file` attribute
83 is either a :class:`StringIO` object or a true file object, depending on
84 whether :func:`rollover` has been called. This file-like object can be
85 used in a :keyword:`with` statement, just like a normal file.
86
87
88.. function:: mkstemp([suffix=''[, prefix='tmp'[, dir=None[, text=False]]]])
89
90 Creates a temporary file in the most secure manner possible. There are
91 no race conditions in the file's creation, assuming that the platform
92 properly implements the :const:`os.O_EXCL` flag for :func:`os.open`. The
93 file is readable and writable only by the creating user ID. If the
94 platform uses permission bits to indicate whether a file is executable,
95 the file is executable by no one. The file descriptor is not inherited
96 by child processes.
97
98 Unlike :func:`TemporaryFile`, the user of :func:`mkstemp` is responsible
99 for deleting the temporary file when done with it.
100
101 If *suffix* is specified, the file name will end with that suffix,
102 otherwise there will be no suffix. :func:`mkstemp` does not put a dot
103 between the file name and the suffix; if you need one, put it at the
104 beginning of *suffix*.
105
106 If *prefix* is specified, the file name will begin with that prefix;
107 otherwise, a default prefix is used.
108
109 If *dir* is specified, the file will be created in that directory;
110 otherwise, a default directory is used. The default directory is chosen
111 from a platform-dependent list, but the user of the application can
112 control the directory location by setting the *TMPDIR*, *TEMP* or *TMP*
113 environment variables. There is thus no guarantee that the generated
114 filename will have any nice properties, such as not requiring quoting
115 when passed to external commands via ``os.popen()``.
116
117 If *text* is specified, it indicates whether to open the file in binary
118 mode (the default) or text mode. On some platforms, this makes no
119 difference.
120
121 :func:`mkstemp` returns a tuple containing an OS-level handle to an open
122 file (as would be returned by :func:`os.open`) and the absolute pathname
123 of that file, in that order.
124
125
126.. function:: mkdtemp([suffix=''[, prefix='tmp'[, dir=None]]])
127
128 Creates a temporary directory in the most secure manner possible. There
129 are no race conditions in the directory's creation. The directory is
130 readable, writable, and searchable only by the creating user ID.
131
132 The user of :func:`mkdtemp` is responsible for deleting the temporary
133 directory and its contents when done with it.
134
135 The *prefix*, *suffix*, and *dir* arguments are the same as for
136 :func:`mkstemp`.
Georg Brandl116aa622007-08-15 14:28:22 +0000137
138 :func:`mkdtemp` returns the absolute pathname of the new directory.
139
Georg Brandl116aa622007-08-15 14:28:22 +0000140
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000141.. function:: mktemp([suffix=''[, prefix='tmp'[, dir=None]]])
Georg Brandl116aa622007-08-15 14:28:22 +0000142
143 .. deprecated:: 2.3
144 Use :func:`mkstemp` instead.
145
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000146 Return an absolute pathname of a file that did not exist at the time the
147 call is made. The *prefix*, *suffix*, and *dir* arguments are the same
148 as for :func:`mkstemp`.
Georg Brandl116aa622007-08-15 14:28:22 +0000149
150 .. warning::
151
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000152 Use of this function may introduce a security hole in your program.
153 By the time you get around to doing anything with the file name it
154 returns, someone else may have beaten you to the punch.
Georg Brandl116aa622007-08-15 14:28:22 +0000155
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000156The module uses two global variables that tell it how to construct a
157temporary name. They are initialized at the first call to any of the
158functions above. The caller may change them, but this is discouraged; use
159the appropriate function arguments, instead.
Georg Brandl116aa622007-08-15 14:28:22 +0000160
161
162.. data:: tempdir
163
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000164 When set to a value other than ``None``, this variable defines the
165 default value for the *dir* argument to all the functions defined in this
166 module.
Georg Brandl116aa622007-08-15 14:28:22 +0000167
Christian Heimes81ee3ef2008-05-04 22:42:01 +0000168 If ``tempdir`` is unset or ``None`` at any call to any of the above
169 functions, Python searches a standard list of directories and sets
170 *tempdir* to the first one which the calling user can create files in.
171 The list is:
Georg Brandl116aa622007-08-15 14:28:22 +0000172
173 #. The directory named by the :envvar:`TMPDIR` environment variable.
174
175 #. The directory named by the :envvar:`TEMP` environment variable.
176
177 #. The directory named by the :envvar:`TMP` environment variable.
178
179 #. A platform-specific location:
180
Georg Brandl116aa622007-08-15 14:28:22 +0000181 * On Windows, the directories :file:`C:\\TEMP`, :file:`C:\\TMP`,
182 :file:`\\TEMP`, and :file:`\\TMP`, in that order.
183
184 * On all other platforms, the directories :file:`/tmp`, :file:`/var/tmp`, and
185 :file:`/usr/tmp`, in that order.
186
187 #. As a last resort, the current working directory.
188
189
190.. function:: gettempdir()
191
192 Return the directory currently selected to create temporary files in. If
193 :data:`tempdir` is not ``None``, this simply returns its contents; otherwise,
194 the search described above is performed, and the result returned.
195
196
197.. data:: template
198
199 .. deprecated:: 2.0
200 Use :func:`gettempprefix` instead.
201
202 When set to a value other than ``None``, this variable defines the prefix of the
203 final component of the filenames returned by :func:`mktemp`. A string of six
204 random letters and digits is appended to the prefix to make the filename unique.
205 On Windows, the default prefix is :file:`~T`; on all other systems it is
206 :file:`tmp`.
207
Georg Brandl116aa622007-08-15 14:28:22 +0000208
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