mimetypes.md
1> **Источник:** https://python-all.ru/3.2/library/mimetypes.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 18.5. [`mimetypes`](https://python-all.ru/3.2/library/mimetypes.html#module-mimetypes) – Сопоставление имён файлов с MIME-типами89**Исходный код:** [Lib/mimetypes.py](https://python-all.ru/src/3.2/Lib/mimetypes.py)1011---1213Модуль [`mimetypes`](https://python-all.ru/3.2/library/mimetypes.html#module-mimetypes) преобразует имя файла или URL в MIME-тип, связанный с расширением файла. Преобразования выполняются от имени файла к MIME-типу и от MIME-типа к расширению файла; кодировки не поддерживаются при обратном преобразовании.1415Модуль предоставляет один класс и ряд вспомогательных функций. Функции – это основной интерфейс к модулю, но некоторые приложения могут заинтересоваться и классом.1617Описанные ниже функции предоставляют основной интерфейс этого модуля. Если модуль не был инициализирован, они вызовут [`init()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.init), если используют информацию, которую настраивает [`init()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.init).1819#### `mimetypes.guess_type(url, strict=True)`2021Определяет тип файла по его имени или URL, задаваемому *url*. Возвращаемое значение – кортеж `(type, encoding)`, где *type* равен `None`, если тип не удалось определить (отсутствует или неизвестен суффикс), или строке вида `'type/subtype'`, пригодной для использования в заголовке MIME *content-type*.2223*encoding* равен `None` при отсутствии кодировки или имени программы, используемой для кодирования (например, **compress** или **gzip**). Кодировка подходит для использования в заголовке *Content-Encoding*, **а не** в заголовке *Content-Transfer-Encoding*. Соответствия задаются таблично. Суффиксы кодировок чувствительны к регистру; суффиксы типов сначала проверяются с учётом регистра, затем без учёта.2425Необязательный аргумент *strict* – флаг, указывающий, ограничивается ли список известных MIME-типов только официальными типами, [зарегистрированными в IANA](https://python-all.ru/3.2/library/mimetypes.html). Когда *strict* равен `True` (по умолчанию), поддерживаются только типы IANA; когда *strict* равен `False`, распознаются также некоторые дополнительные нестандартные, но часто используемые MIME-типы.2627#### `mimetypes.guess_all_extensions(type, strict=True)`2829Определяет расширения для файла по его MIME-типу, задаваемому *type*. Возвращаемое значение – список строк со всеми возможными расширениями файлов, включая ведущую точку (`'.'`). Расширения не обязательно были связаны с каким-либо конкретным потоком данных, но будут сопоставлены MIME-типу *type* функцией [`guess_type()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.guess_type).3031Необязательный аргумент *strict* имеет то же значение, что и в функции [`guess_type()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.guess_type).3233#### `mimetypes.guess_extension(type, strict=True)`3435Определяет расширение для файла по его MIME-типу, задаваемому *type*. Возвращаемое значение – строка с расширением файла, включая ведущую точку (`'.'`). Расширение не обязательно было связано с каким-либо конкретным потоком данных, но будет сопоставлено MIME-типу *type* функцией [`guess_type()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.guess_type). Если для *type* не удалось определить расширение, возвращается `None`.3637Необязательный аргумент *strict* имеет то же значение, что и в функции [`guess_type()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.guess_type).3839Некоторые дополнительные функции и элементы данных доступны для управления поведением модуля.4041#### `mimetypes.init(files=None)`4243Инициализирует внутренние структуры данных. Если задан, *files* должен быть последовательностью имён файлов, которые следует использовать для расширения карты типов по умолчанию. Если опущен, используются имена файлов из [`knownfiles`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.knownfiles); в Windows загружаются текущие настройки реестра. Каждый файл, указанный в *files* или [`knownfiles`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.knownfiles), имеет приоритет над теми, что были указаны ранее. Допускается многократный вызов [`init()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.init).4445Изменено в версии 3.2: Ранее настройки реестра Windows игнорировались.4647#### `mimetypes.read_mime_types(filename)`4849Загружает карту типов из файла *filename*, если он существует. Карта типов возвращается в виде словаря, сопоставляющего расширения файлов (включая ведущую точку (`'.'`)) строкам вида `'type/subtype'`. Если файл *filename* не существует или не может быть прочитан, возвращается `None`.5051#### `mimetypes.add_type(type, ext, strict=True)`5253Добавляет сопоставление MIME-типа *type* с расширением *ext*. Если расширение уже известно, новый тип заменит старый. Если тип уже известен, расширение будет добавлено в список известных расширений.5455Когда *strict* равен `True` (значение по умолчанию), сопоставление добавляется к официальным MIME-типам, в противном случае – к нестандартным.5657#### `mimetypes.inited`5859Флаг, указывающий, были ли инициализированы глобальные структуры данных. Устанавливается в `True` функцией [`init()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.init).6061#### `mimetypes.knownfiles`6263Список имён файлов карты типов, обычно устанавливаемых. Эти файлы обычно называются `mime.types` и устанавливаются в разные места разными пакетами.6465#### `mimetypes.suffix_map`6667Словарь, сопоставляющий суффиксы суффиксам. Используется для распознавания закодированных файлов, у которых кодировка и тип указываются одним и тем же расширением. Например, расширение `.tgz` сопоставляется `.tar.gz`, чтобы кодировка и тип распознавались по отдельности.6869#### `mimetypes.encodings_map`7071Словарь, отображающий расширения имён файлов на типы кодировок.7273#### `mimetypes.types_map`7475Словарь, отображающий расширения имён файлов на MIME‑типы.7677#### `mimetypes.common_types`7879Словарь, отображающий расширения имён файлов на нестандартные, но часто встречающиеся MIME‑типы.8081Пример использования модуля:8283```python84>>> import mimetypes85>>> mimetypes.init()86>>> mimetypes.knownfiles87['/etc/mime.types', '/etc/httpd/mime.types', ... ]88>>> mimetypes.suffix_map['.tgz']89'.tar.gz'90>>> mimetypes.encodings_map['.gz']91'gzip'92>>> mimetypes.types_map['.tgz']93'application/x-tar-gz'94```9596## 18.5.1. Объекты MimeTypes9798Класс [`MimeTypes`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.MimeTypes) может быть полезен для приложений, которым может потребоваться более одной базы MIME-типов; он предоставляет интерфейс, аналогичный интерфейсу модуля [`mimetypes`](https://python-all.ru/3.2/library/mimetypes.html#module-mimetypes).99100#### `class mimetypes.MimeTypes(filenames=(), strict=True)`101102Этот класс представляет базу MIME-типов. По умолчанию он предоставляет доступ к той же базе данных, что и остальная часть этого модуля. Исходная база данных является копией той, что предоставлена модулем, и может быть расширена загрузкой дополнительных файлов в стиле `mime.types` в базу данных с помощью методов [`read()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.MimeTypes.read) или [`readfp()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.MimeTypes.readfp). Словари сопоставлений также можно очистить перед загрузкой дополнительных данных, если данные по умолчанию не нужны.103104С помощью необязательного параметра *filenames* можно загрузить дополнительные файлы «поверх» базы по умолчанию.105106#### `MimeTypes.suffix_map`107108Словарь, сопоставляющий расширения расширениям. Используется для распознавания закодированных файлов, у которых кодировка и тип указываются одним и тем же расширением. Например, расширение `.tgz` сопоставляется с `.tar.gz`, чтобы кодировка и тип распознавались отдельно. Изначально это копия глобального [`suffix_map`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.suffix_map), определённого в модуле.109110#### `MimeTypes.encodings_map`111112Словарь, сопоставляющий расширения имён файлов типам кодировки. Изначально это копия глобального [`encodings_map`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.encodings_map), определённого в модуле.113114#### `MimeTypes.types_map`115116Кортеж из двух словарей, сопоставляющих расширения имён файлов MIME-типам: первый словарь для нестандартных типов, второй – для стандартных. Они инициализируются с помощью [`common_types`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.common_types) и [`types_map`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.types_map).117118#### `MimeTypes.types_map_inv`119120Кортеж из двух словарей, сопоставляющих MIME-типы списку расширений имён файлов: первый словарь для нестандартных типов, второй – для стандартных. Они инициализируются с помощью [`common_types`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.common_types) и [`types_map`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.types_map).121122#### `MimeTypes.guess_extension(type, strict=True)`123124Аналогично функции [`guess_extension()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.guess_extension), но использует таблицы, хранящиеся в объекте.125126#### `MimeTypes.guess_type(url, strict=True)`127128Аналогично функции [`guess_type()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.guess_type), но использует таблицы, хранящиеся в объекте.129130#### `MimeTypes.guess_all_extensions(type, strict=True)`131132Аналогично функции [`guess_all_extensions()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.guess_all_extensions), но использует таблицы, хранящиеся в объекте.133134#### `MimeTypes.read(filename, strict=True)`135136Загружает MIME-информацию из файла с именем *filename*. Для разбора файла используется [`readfp()`](https://python-all.ru/3.2/library/mimetypes.html#mimetypes.MimeTypes.readfp).137138Если *strict* равно `True`, информация добавляется в список стандартных типов, иначе – в список нестандартных типов.139140#### `MimeTypes.readfp(fp, strict=True)`141142Загружает информацию о MIME-типах из открытого файла *fp*. Файл должен быть в формате стандартных файлов `mime.types`.143144Если *strict* равно `True`, информация добавляется в список стандартных типов, иначе – в список нестандартных типов.145146#### `MimeTypes.read_windows_registry(strict=True)`147148Загрузка информации о MIME-типах из реестра Windows. Доступность: Windows.149150Если *strict* равно `True`, информация добавляется в список стандартных типов, иначе – в список нестандартных типов.151152Новое в версии 3.2.153