mimetypes.md
1> **Источник:** https://python-all.ru/3.1/library/mimetypes.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 18.5. `mimetypes` – Сопоставление имён файлов с MIME-типами89Модуль `mimetypes` преобразует имя файла или URL в MIME-тип, связанный с расширением файла, и обратно. Поддерживается преобразование как из имени файла в MIME-тип, так и из MIME-типа в расширение файла; кодировки для второго преобразования не поддерживаются.1011Модуль предоставляет один класс и ряд вспомогательных функций. Функции – это основной интерфейс к модулю, но некоторые приложения могут заинтересоваться и классом.1213Описанные ниже функции предоставляют основной интерфейс этого модуля. Если модуль не был инициализирован, они вызовут [`init()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.init), если используют информацию, которую настраивает [`init()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.init).1415#### `mimetypes.guess_type(url, strict=True)`1617Определяет тип файла по его имени или URL, заданному *filename*. Возвращаемое значение – кортеж `(type, encoding)`, где *type* равен `None`, если тип не удалось определить (отсутствует или неизвестно расширение), или строке вида `'type/subtype'`, пригодной для заголовка MIME *content-type*.1819*encoding* равен `None` при отсутствии кодировки или имени программы, используемой для кодирования (например, **compress** или **gzip**). Кодировка подходит для использования в заголовке *Content-Encoding*, *а не* в заголовке *Content-Transfer-Encoding*. Соответствия задаются таблично. Суффиксы кодировок чувствительны к регистру; суффиксы типов сначала проверяются с учётом регистра, затем без учёта.2021Необязательный параметр *strict* – флаг, указывающий, ограничивается ли список известных MIME-типов только официальными типами, [зарегистрированными в IANA](https://python-all.ru/3.1/library/mimetypes.html). Когда *strict* равен true (по умолчанию), поддерживаются только типы IANA; когда *strict* равен false, распознаются также некоторые дополнительные нестандартные, но часто используемые MIME-типы.2223#### `mimetypes.guess_all_extensions(type, strict=True)`2425Определяет расширения для файла по его MIME-типу, задаваемому *type*. Возвращаемое значение – список строк со всеми возможными расширениями файлов, включая ведущую точку (`'.'`). Расширения не обязательно были связаны с каким-либо конкретным потоком данных, но будут сопоставлены MIME-типу *type* функцией [`guess_type()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.guess_type).2627Необязательный параметр *strict* имеет то же значение, что и в функции [`guess_type()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.guess_type).2829#### `mimetypes.guess_extension(type, strict=True)`3031Определяет расширение файла по его MIME-типу, заданному *type*. Возвращаемое значение – строка с расширением файла, включая точку в начале (`'.'`). Расширение не обязательно связано с каким-либо конкретным потоком данных, но будет сопоставлено MIME-типу *type* функцией [`guess_type()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.guess_type). Если для *type* не удаётся определить расширение, возвращается `None`.3233Необязательный параметр *strict* имеет то же значение, что и в функции [`guess_type()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.guess_type).3435Некоторые дополнительные функции и элементы данных доступны для управления поведением модуля.3637#### `mimetypes.init(files=None)`3839Инициализирует внутренние структуры данных. Если задан,4041*files*4243должен быть последовательностью имён файлов, которые следует использовать для расширения карты типов по умолчанию. Если параметр опущен, имена файлов берутся из4445[`knownfiles`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.knownfiles)4647. Каждый файл, указанный в4849*files*5051или5253[`knownfiles`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.knownfiles)5455, имеет приоритет над теми, что перечислены ранее. Допускается многократный вызов5657[`init()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.init)5859.6061#### `mimetypes.read_mime_types(filename)`6263Загружает карту типов из файла6465*filename*6667, если он существует. Карта типов возвращается в виде словаря, сопоставляющего расширения файлов (включая точку в начале,6869`'.'`7071) строкам вида7273`'type/subtype'`7475. Если файл7677*filename*7879не существует или не может быть прочитан, возвращается8081`None`8283.8485#### `mimetypes.add_type(type, ext, strict=True)`8687Добавляет сопоставление MIME-типа *type* с расширением *ext*. Если расширение уже известно, новый тип заменяет старый. Если тип уже известен, расширение добавляется в список известных расширений.8889Когда *strict* равен True (по умолчанию), сопоставление добавляется к официальным MIME-типам, в противном случае – к нестандартным.9091#### `mimetypes.inited`9293Флаг, указывающий, были ли инициализированы глобальные структуры данных. Устанавливается в true вызовом9495[`init()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.init)9697.9899#### `mimetypes.knownfiles`100101Список имён файлов карты типов, обычно устанавливаемых. Эти файлы обычно называются `mime.types` и устанавливаются в разные места разными пакетами.102103#### `mimetypes.suffix_map`104105Словарь, сопоставляющий суффиксы суффиксам. Используется для распознавания закодированных файлов, у которых кодировка и тип указываются одним и тем же расширением. Например, расширение106107`.tgz`108109сопоставляется110111`.tar.gz`112113, чтобы кодировка и тип распознавались по отдельности.114115#### `mimetypes.encodings_map`116117Словарь, отображающий расширения имён файлов на типы кодировок.118119#### `mimetypes.types_map`120121Словарь, отображающий расширения имён файлов на MIME‑типы.122123#### `mimetypes.common_types`124125Словарь, отображающий расширения имён файлов на нестандартные, но часто встречающиеся MIME‑типы.126127Класс [`MimeTypes`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.MimeTypes) может быть полезен для приложений, которым требуется более одной базы MIME-типов:128129#### `class mimetypes.MimeTypes(filenames=(), strict=True)`130131Этот класс представляет базу MIME-типов. По умолчанию он предоставляет доступ к той же базе данных, что и остальная часть этого модуля. Исходная база данных является копией той, что предоставлена модулем, и может быть расширена загрузкой дополнительных файлов в стиле `mime.types` в базу данных с помощью методов [`read()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.MimeTypes.read) или [`readfp()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.MimeTypes.readfp). Словари сопоставлений также можно очистить перед загрузкой дополнительных данных, если данные по умолчанию не нужны.132133С помощью необязательного параметра *filenames* можно загрузить дополнительные файлы «поверх» базы по умолчанию.134135Пример использования модуля:136137```python138>>> import mimetypes139>>> mimetypes.init()140>>> mimetypes.knownfiles141['/etc/mime.types', '/etc/httpd/mime.types', ... ]142>>> mimetypes.suffix_map['.tgz']143'.tar.gz'144>>> mimetypes.encodings_map['.gz']145'gzip'146>>> mimetypes.types_map['.tgz']147'application/x-tar-gz'148```149150## 18.5.1. Объекты MimeTypes151152Экземпляры [`MimeTypes`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.MimeTypes) предоставляют интерфейс, очень похожий на интерфейс модуля `mimetypes`.153154#### `MimeTypes.suffix_map`155156Словарь, сопоставляющий одни расширения другим. Используется для распознавания закодированных файлов, у которых кодировка и тип указываются одним и тем же расширением. Например, расширение157158`.tgz`159160сопоставляется161162`.tar.gz`163164, чтобы кодировка и тип распознавались отдельно. Изначально это копия глобального165166`suffix_map`167168, определённого в модуле.169170#### `MimeTypes.encodings_map`171172Словарь, сопоставляющий расширения файлов типам кодировок. Изначально это копия глобального173174`encodings_map`175176, определённого в модуле.177178#### `MimeTypes.types_map`179180Словарь, сопоставляющий расширения имён файлов с MIME-типами. Изначально это копия глобального181182`types_map`183184, определённого в модуле.185186#### `MimeTypes.common_types`187188Словарь, сопоставляющий расширения имён файлов с нестандартными, но часто встречающимися MIME-типами. Изначально это копия глобального189190`common_types`191192, определённого в модуле.193194#### `MimeTypes.guess_extension(type, strict=True)`195196Аналогично функции197198[`guess_extension()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.guess_extension)199200, но использует таблицы, хранящиеся в объекте.201202#### `MimeTypes.guess_type(url, strict=True)`203204Аналогично функции205206[`guess_type()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.guess_type)207208, но использует таблицы, хранящиеся в объекте.209210#### `MimeTypes.read(path)`211212Загружает MIME-информацию из файла с именем213214*path*215216. Для разбора файла используется217218[`readfp()`](https://python-all.ru/3.1/library/mimetypes.html#mimetypes.MimeTypes.readfp)219220.221222#### `MimeTypes.readfp(file)`223224Загружает информацию о MIME-типах из открытого файла. Файл должен иметь формат стандартных файлов225226`mime.types`227228.229