1
:mod:`mimetypes` --- Map filenames to MIME types
2
================================================
5
:synopsis: Mapping of filename extensions to MIME types.
6
.. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
9
.. index:: pair: MIME; content type
11
**Source code:** :source:`Lib/mimetypes.py`
15
The :mod:`mimetypes` module converts between a filename or URL and the MIME type
16
associated with the filename extension. Conversions are provided from filename
17
to MIME type and from MIME type to filename extension; encodings are not
18
supported for the latter conversion.
20
The module provides one class and a number of convenience functions. The
21
functions are the normal interface to this module, but some applications may be
22
interested in the class as well.
24
The functions described below provide the primary interface for this module. If
25
the module has not been initialized, they will call :func:`init` if they rely on
26
the information :func:`init` sets up.
29
.. function:: guess_type(url, strict=True)
31
.. index:: pair: MIME; headers
33
Guess the type of a file based on its filename or URL, given by *url*. The
34
return value is a tuple ``(type, encoding)`` where *type* is ``None`` if the
35
type can't be guessed (missing or unknown suffix) or a string of the form
36
``'type/subtype'``, usable for a MIME :mailheader:`content-type` header.
38
*encoding* is ``None`` for no encoding or the name of the program used to encode
39
(e.g. :program:`compress` or :program:`gzip`). The encoding is suitable for use
40
as a :mailheader:`Content-Encoding` header, **not** as a
41
:mailheader:`Content-Transfer-Encoding` header. The mappings are table driven.
42
Encoding suffixes are case sensitive; type suffixes are first tried case
43
sensitively, then case insensitively.
45
The optional *strict* argument is a flag specifying whether the list of known MIME types
46
is limited to only the official types `registered with IANA
47
<http://www.iana.org/assignments/media-types/>`_.
48
When *strict* is ``True`` (the default), only the IANA types are supported; when
49
*strict* is ``False``, some additional non-standard but commonly used MIME types
53
.. function:: guess_all_extensions(type, strict=True)
55
Guess the extensions for a file based on its MIME type, given by *type*. The
56
return value is a list of strings giving all possible filename extensions,
57
including the leading dot (``'.'``). The extensions are not guaranteed to have
58
been associated with any particular data stream, but would be mapped to the MIME
59
type *type* by :func:`guess_type`.
61
The optional *strict* argument has the same meaning as with the :func:`guess_type` function.
64
.. function:: guess_extension(type, strict=True)
66
Guess the extension for a file based on its MIME type, given by *type*. The
67
return value is a string giving a filename extension, including the leading dot
68
(``'.'``). The extension is not guaranteed to have been associated with any
69
particular data stream, but would be mapped to the MIME type *type* by
70
:func:`guess_type`. If no extension can be guessed for *type*, ``None`` is
73
The optional *strict* argument has the same meaning as with the :func:`guess_type` function.
75
Some additional functions and data items are available for controlling the
76
behavior of the module.
79
.. function:: init(files=None)
81
Initialize the internal data structures. If given, *files* must be a sequence
82
of file names which should be used to augment the default type map. If omitted,
83
the file names to use are taken from :const:`knownfiles`; on Windows, the
84
current registry settings are loaded. Each file named in *files* or
85
:const:`knownfiles` takes precedence over those named before it. Calling
86
:func:`init` repeatedly is allowed.
88
Specifying an empty list for *files* will prevent the system defaults from
89
being applied: only the well-known values will be present from a built-in list.
91
.. versionchanged:: 3.2
92
Previously, Windows registry settings were ignored.
95
.. function:: read_mime_types(filename)
97
Load the type map given in the file *filename*, if it exists. The type map is
98
returned as a dictionary mapping filename extensions, including the leading dot
99
(``'.'``), to strings of the form ``'type/subtype'``. If the file *filename*
100
does not exist or cannot be read, ``None`` is returned.
103
.. function:: add_type(type, ext, strict=True)
105
Add a mapping from the MIME type *type* to the extension *ext*. When the
106
extension is already known, the new type will replace the old one. When the type
107
is already known the extension will be added to the list of known extensions.
109
When *strict* is ``True`` (the default), the mapping will added to the official MIME
110
types, otherwise to the non-standard ones.
115
Flag indicating whether or not the global data structures have been initialized.
116
This is set to ``True`` by :func:`init`.
121
.. index:: single: file; mime.types
123
List of type map file names commonly installed. These files are typically named
124
:file:`mime.types` and are installed in different locations by different
130
Dictionary mapping suffixes to suffixes. This is used to allow recognition of
131
encoded files for which the encoding and the type are indicated by the same
132
extension. For example, the :file:`.tgz` extension is mapped to :file:`.tar.gz`
133
to allow the encoding and type to be recognized separately.
136
.. data:: encodings_map
138
Dictionary mapping filename extensions to encoding types.
143
Dictionary mapping filename extensions to MIME types.
146
.. data:: common_types
148
Dictionary mapping filename extensions to non-standard, but commonly found MIME
152
An example usage of the module::
156
>>> mimetypes.knownfiles
157
['/etc/mime.types', '/etc/httpd/mime.types', ... ]
158
>>> mimetypes.suffix_map['.tgz']
160
>>> mimetypes.encodings_map['.gz']
162
>>> mimetypes.types_map['.tgz']
163
'application/x-tar-gz'
166
.. _mimetypes-objects:
171
The :class:`MimeTypes` class may be useful for applications which may want more
172
than one MIME-type database; it provides an interface similar to the one of the
173
:mod:`mimetypes` module.
176
.. class:: MimeTypes(filenames=(), strict=True)
178
This class represents a MIME-types database. By default, it provides access to
179
the same database as the rest of this module. The initial database is a copy of
180
that provided by the module, and may be extended by loading additional
181
:file:`mime.types`\ -style files into the database using the :meth:`read` or
182
:meth:`readfp` methods. The mapping dictionaries may also be cleared before
183
loading additional data if the default data is not desired.
185
The optional *filenames* parameter can be used to cause additional files to be
186
loaded "on top" of the default database.
189
.. attribute:: MimeTypes.suffix_map
191
Dictionary mapping suffixes to suffixes. This is used to allow recognition of
192
encoded files for which the encoding and the type are indicated by the same
193
extension. For example, the :file:`.tgz` extension is mapped to :file:`.tar.gz`
194
to allow the encoding and type to be recognized separately. This is initially a
195
copy of the global :data:`suffix_map` defined in the module.
198
.. attribute:: MimeTypes.encodings_map
200
Dictionary mapping filename extensions to encoding types. This is initially a
201
copy of the global :data:`encodings_map` defined in the module.
204
.. attribute:: MimeTypes.types_map
206
Tuple containing two dictionaries, mapping filename extensions to MIME types:
207
the first dictionary is for the non-standards types and the second one is for
208
the standard types. They are initialized by :data:`common_types` and
212
.. attribute:: MimeTypes.types_map_inv
214
Tuple containing two dictionaries, mapping MIME types to a list of filename
215
extensions: the first dictionary is for the non-standards types and the
216
second one is for the standard types. They are initialized by
217
:data:`common_types` and :data:`types_map`.
220
.. method:: MimeTypes.guess_extension(type, strict=True)
222
Similar to the :func:`guess_extension` function, using the tables stored as part
226
.. method:: MimeTypes.guess_type(url, strict=True)
228
Similar to the :func:`guess_type` function, using the tables stored as part of
232
.. method:: MimeTypes.guess_all_extensions(type, strict=True)
234
Similar to the :func:`guess_all_extensions` function, using the tables stored
235
as part of the object.
238
.. method:: MimeTypes.read(filename, strict=True)
240
Load MIME information from a file named *filename*. This uses :meth:`readfp` to
243
If *strict* is ``True``, information will be added to list of standard types,
244
else to the list of non-standard types.
247
.. method:: MimeTypes.readfp(fp, strict=True)
249
Load MIME type information from an open file *fp*. The file must have the format of
250
the standard :file:`mime.types` files.
252
If *strict* is ``True``, information will be added to the list of standard
253
types, else to the list of non-standard types.
256
.. method:: MimeTypes.read_windows_registry(strict=True)
258
Load MIME type information from the Windows registry. Availability: Windows.
260
If *strict* is ``True``, information will be added to the list of standard
261
types, else to the list of non-standard types.
263
.. versionadded:: 3.2