> **Источник:** https://python-all.ru/3.0/library/mimetypes.html
>
> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.

---

# `mimetypes` – Сопоставление имён файлов с MIME-типами

Модуль `mimetypes` преобразует имя файла или URL в MIME-тип, связанный с расширением файла, и обратно. Поддерживается преобразование как из имени файла в MIME-тип, так и из MIME-типа в расширение файла; кодировки для второго преобразования не поддерживаются.

Модуль предоставляет один класс и ряд вспомогательных функций. Функции – это основной интерфейс к модулю, но некоторые приложения могут заинтересоваться и классом.

Описанные ниже функции предоставляют основной интерфейс этого модуля. Если модуль не был инициализирован, они вызовут [`init()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.init), если используют информацию, которую настраивает [`init()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.init).

#### `[mimetypes.guess_type]mimetypes.guess_type(filename[, strict])`

Определяет тип файла по его имени или URL, заданному *filename*. Возвращаемое значение – кортеж `(type, encoding)`, где *type* равен `None`, если тип не удалось определить (отсутствует или неизвестно расширение), или строке вида `'type/subtype'`, пригодной для заголовка MIME *content-type*.

*encoding* равен `None` при отсутствии кодировки или имени программы, используемой для кодирования (например, **compress** или **gzip**). Кодировка подходит для использования в заголовке *Content-Encoding*, *а не* в заголовке *Content-Transfer-Encoding*. Соответствия задаются таблично. Суффиксы кодировок чувствительны к регистру; суффиксы типов сначала проверяются с учётом регистра, затем без учёта.

Необязательный параметр *strict* – флаг, указывающий, ограничивается ли список известных MIME-типов только официальными типами, [зарегистрированными в IANA](https://python-all.ru/3.0/library/mimetypes.html). Когда *strict* равен true (по умолчанию), поддерживаются только типы IANA; когда *strict* равен false, распознаются также некоторые дополнительные нестандартные, но часто используемые MIME-типы.

#### `[mimetypes.guess_all_extensions]mimetypes.guess_all_extensions(type[, strict])`

Определяет расширения для файла по его MIME-типу, задаваемому *type*. Возвращаемое значение – список строк со всеми возможными расширениями файлов, включая ведущую точку (`'.'`). Расширения не обязательно были связаны с каким-либо конкретным потоком данных, но будут сопоставлены MIME-типу *type* функцией [`guess_type()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.guess_type).

Необязательный параметр *strict* имеет то же значение, что и в функции [`guess_type()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.guess_type).

#### `[mimetypes.guess_extension]mimetypes.guess_extension(type[, strict])`

Определяет расширение файла по его MIME-типу, заданному *type*. Возвращаемое значение – строка с расширением файла, включая точку в начале (`'.'`). Расширение не обязательно связано с каким-либо конкретным потоком данных, но будет сопоставлено MIME-типу *type* функцией [`guess_type()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.guess_type). Если для *type* не удаётся определить расширение, возвращается `None`.

Необязательный параметр *strict* имеет то же значение, что и в функции [`guess_type()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.guess_type).

Некоторые дополнительные функции и элементы данных доступны для управления поведением модуля.

#### `[mimetypes.init]mimetypes.init([files])`

Инициализирует внутренние структуры данных. Если задан,

*files*

должен быть последовательностью имён файлов, которые следует использовать для расширения карты типов по умолчанию. Если параметр опущен, имена файлов берутся из

[`knownfiles`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.knownfiles)

. Каждый файл, указанный в

*files*

или

[`knownfiles`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.knownfiles)

, имеет приоритет над теми, что перечислены ранее. Допускается многократный вызов

[`init()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.init)

.

#### `[mimetypes.read_mime_types]mimetypes.read_mime_types(filename)`

Загружает карту типов из файла

*filename*

, если он существует. Карта типов возвращается в виде словаря, сопоставляющего расширения файлов (включая точку в начале,

`'.'`

) строкам вида

`'type/subtype'`

. Если файл

*filename*

не существует или не может быть прочитан, возвращается

`None`

.

#### `[mimetypes.add_type]mimetypes.add_type(type, ext[, strict])`

Добавляет сопоставление MIME-типа *type* с расширением *ext*. Если расширение уже известно, новый тип заменяет старый. Если тип уже известен, расширение добавляется в список известных расширений.

Когда *strict* равен True (по умолчанию), сопоставление добавляется к официальным MIME-типам, в противном случае – к нестандартным.

#### `[mimetypes.inited]mimetypes.inited`

Флаг, указывающий, были ли инициализированы глобальные структуры данных. Устанавливается в true вызовом

[`init()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.init)

.

#### `[mimetypes.knownfiles]mimetypes.knownfiles`

Список имён файлов карты типов, обычно устанавливаемых. Эти файлы обычно называются `mime.types` и устанавливаются в разные места разными пакетами.

#### `[mimetypes.suffix_map]mimetypes.suffix_map`

Словарь, сопоставляющий суффиксы суффиксам. Используется для распознавания закодированных файлов, у которых кодировка и тип указываются одним и тем же расширением. Например, расширение

`.tgz`

сопоставляется

`.tar.gz`

, чтобы кодировка и тип распознавались по отдельности.

#### `[mimetypes.encodings_map]mimetypes.encodings_map`

Словарь, отображающий расширения имён файлов на типы кодировок.

#### `[mimetypes.types_map]mimetypes.types_map`

Словарь, отображающий расширения имён файлов на MIME‑типы.

#### `[mimetypes.common_types]mimetypes.common_types`

Словарь, отображающий расширения имён файлов на нестандартные, но часто встречающиеся MIME‑типы.

Класс [`MimeTypes`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.MimeTypes) может быть полезен для приложений, которым требуется более одной базы MIME-типов:

#### `[mimetypes.MimeTypes]class mimetypes.MimeTypes([filenames])`

Этот класс представляет базу MIME-типов. По умолчанию он предоставляет доступ к той же базе данных, что и остальная часть этого модуля. Исходная база данных является копией той, что предоставлена модулем, и может быть расширена загрузкой дополнительных файлов в стиле `mime.types` в базу данных с помощью методов [`read()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.MimeTypes.read) или [`readfp()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.MimeTypes.readfp). Словари сопоставлений также можно очистить перед загрузкой дополнительных данных, если данные по умолчанию не нужны.

С помощью необязательного параметра *filenames* можно загрузить дополнительные файлы «поверх» базы по умолчанию.

Пример использования модуля:

```python
>>> import mimetypes
>>> mimetypes.init()
>>> mimetypes.knownfiles
['/etc/mime.types', '/etc/httpd/mime.types', ... ]
>>> mimetypes.suffix_map['.tgz']
'.tar.gz'
>>> mimetypes.encodings_map['.gz']
'gzip'
>>> mimetypes.types_map['.tgz']
'application/x-tar-gz'
```

## Объекты MimeTypes

Экземпляры [`MimeTypes`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.MimeTypes) предоставляют интерфейс, очень похожий на интерфейс модуля `mimetypes`.

#### `[mimetypes.MimeTypes.suffix_map]MimeTypes.suffix_map`

Словарь, сопоставляющий одни расширения другим. Используется для распознавания закодированных файлов, у которых кодировка и тип указываются одним и тем же расширением. Например, расширение

`.tgz`

сопоставляется

`.tar.gz`

, чтобы кодировка и тип распознавались отдельно. Изначально это копия глобального

`suffix_map`

, определённого в модуле.

#### `[mimetypes.MimeTypes.encodings_map]MimeTypes.encodings_map`

Словарь, сопоставляющий расширения файлов типам кодировок. Изначально это копия глобального

`encodings_map`

, определённого в модуле.

#### `[mimetypes.MimeTypes.types_map]MimeTypes.types_map`

Словарь, сопоставляющий расширения имён файлов с MIME-типами. Изначально это копия глобального

`types_map`

, определённого в модуле.

#### `[mimetypes.MimeTypes.common_types]MimeTypes.common_types`

Словарь, сопоставляющий расширения имён файлов с нестандартными, но часто встречающимися MIME-типами. Изначально это копия глобального

`common_types`

, определённого в модуле.

#### `[mimetypes.MimeTypes.guess_extension]MimeTypes.guess_extension(type[, strict])`

Аналогично функции

[`guess_extension()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.guess_extension)

, но использует таблицы, хранящиеся в объекте.

#### `[mimetypes.MimeTypes.guess_type]MimeTypes.guess_type(url[, strict])`

Аналогично функции

[`guess_type()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.guess_type)

, но использует таблицы, хранящиеся в объекте.

#### `[mimetypes.MimeTypes.read]MimeTypes.read(path)`

Загружает MIME-информацию из файла с именем

*path*

. Для разбора файла используется

[`readfp()`](https://python-all.ru/3.0/library/mimetypes.html#mimetypes.MimeTypes.readfp)

.

#### `[mimetypes.MimeTypes.readfp]MimeTypes.readfp(file)`

Загружает информацию о MIME-типах из открытого файла. Файл должен иметь формат стандартных файлов

`mime.types`

.
