Документация Python неофициальный перевод

mimetypes.md

159 строк · 16.6 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.7/library/mimetypes.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# [`mimetypes`](https://python-all.ru/3.7/library/mimetypes.html#module-mimetypes) – сопоставление имён файлов с MIME-типами89**Исходный код:** [Lib/mimetypes.py](https://python-all.ru/src/3.7/Lib/mimetypes.py)1011---1213Модуль [`mimetypes`](https://python-all.ru/3.7/library/mimetypes.html#module-mimetypes) преобразует имя файла или URL в MIME-тип, связанный с расширением файла. Предусмотрены преобразования из имени файла в MIME-тип и из MIME-типа в расширение файла; кодировки не поддерживаются для последнего преобразования.1415Модуль предоставляет один класс и ряд вспомогательных функций. Функции – это основной интерфейс к модулю, но некоторые приложения могут заинтересоваться и классом.1617Описанные ниже функции предоставляют основной интерфейс для этого модуля. Если модуль не был инициализирован, они вызовут [`init()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.init), если полагаются на информацию, заданную с помощью [`init()`](https://python-all.ru/3.7/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.7/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.7/library/mimetypes.html#mimetypes.guess_type).3031Необязательный аргумент *strict* имеет то же значение, что и в функции [`guess_type()`](https://python-all.ru/3.7/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.7/library/mimetypes.html#mimetypes.guess_type). Если для *type* не удаётся определить расширение, возвращается `None`.3637Необязательный аргумент *strict* имеет то же значение, что и в функции [`guess_type()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.guess_type).3839Некоторые дополнительные функции и элементы данных доступны для управления поведением модуля.4041#### `mimetypes.init(files=None)`4243Инициализирует внутренние структуры данных. Если задан, *files* должен быть последовательностью имён файлов, которые следует использовать для дополнения карты типов по умолчанию. Если не указан, используемые имена файлов берутся из [`knownfiles`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.knownfiles); в Windows загружаются текущие настройки реестра. Каждый файл, указанный в *files* или [`knownfiles`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.knownfiles), имеет приоритет над указанными ранее. Допускается многократный вызов [`init()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.init).4445Указание пустого списка для *files* предотвратит применение системных значений по умолчанию: будут присутствовать только известные значения из встроенного списка.4647Если *files* равен `None`, внутренняя структура данных полностью перестраивается в исходное значение по умолчанию. Это стабильная операция и при многократном вызове будет выдавать одинаковые результаты.4849Изменено в версии 3.2: Ранее настройки реестра Windows игнорировались.5051#### `mimetypes.read_mime_types(filename)`5253Загружает карту типов из файла *filename*, если он существует. Карта типов возвращается в виде словаря, сопоставляющего расширения файлов, включая начальную точку (`'.'`), со строками вида `'type/subtype'`. Если файл *filename* не существует или не может быть прочитан, возвращается `None`.5455#### `mimetypes.add_type(type, ext, strict=True)`5657Добавляет сопоставление MIME-типа *type* с расширением *ext*. Если расширение уже известно, новый тип заменит старый. Если тип уже известен, расширение будет добавлено в список известных расширений.5859Если *strict* равно `True` (значение по умолчанию), соответствие добавляется в официальные MIME-типы, иначе – в нестандартные.6061#### `mimetypes.inited`6263Флаг, указывающий, были ли инициализированы глобальные структуры данных. Устанавливается в `True` функцией [`init()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.init).6465#### `mimetypes.knownfiles`6667Список имён файлов карт типов, которые обычно устанавливаются. Обычно эти файлы называются `mime.types` и устанавливаются разными пакетами в разные расположения.6869#### `mimetypes.suffix_map`7071Словарь, отображающий одни суффиксы на другие. Используется для распознавания закодированных файлов, у которых кодировка и тип указываются одним и тем же расширением. Например, расширение `.tgz` отображается на `.tar.gz`, чтобы кодировку и тип можно было распознавать по отдельности.7273#### `mimetypes.encodings_map`7475Словарь, отображающий расширения имён файлов на типы кодировок.7677#### `mimetypes.types_map`7879Словарь, отображающий расширения имён файлов на MIME‑типы.8081#### `mimetypes.common_types`8283Словарь, отображающий расширения имён файлов на нестандартные, но часто встречающиеся MIME‑типы.8485Пример использования модуля:8687```python88>>> import mimetypes89>>> mimetypes.init()90>>> mimetypes.knownfiles91['/etc/mime.types', '/etc/httpd/mime.types', ... ]92>>> mimetypes.suffix_map['.tgz']93'.tar.gz'94>>> mimetypes.encodings_map['.gz']95'gzip'96>>> mimetypes.types_map['.tgz']97'application/x-tar-gz'98```99100## Объекты MimeTypes101102Класс [`MimeTypes`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.MimeTypes) может быть полезен приложениям, которым требуется более одной базы MIME‑типов; он предоставляет интерфейс, похожий на интерфейс модуля [`mimetypes`](https://python-all.ru/3.7/library/mimetypes.html#module-mimetypes).103104#### `class mimetypes.MimeTypes(filenames=(), strict=True)`105106Этот класс представляет базу MIME‑типов. По умолчанию он предоставляет доступ к той же базе, что и остальная часть модуля. Изначальная база – копия базы модуля, и её можно расширить, загружая в неё дополнительные файлы в стиле `mime.types` с помощью методов [`read()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.MimeTypes.read) или [`readfp()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.MimeTypes.readfp). Словари отображений можно очистить перед загрузкой дополнительных данных, если данные по умолчанию не нужны.107108С помощью необязательного параметра *filenames* можно загрузить дополнительные файлы «поверх» базы по умолчанию.109110#### `suffix_map`111112Словарь, отображающий одни суффиксы на другие. Используется для распознавания закодированных файлов, у которых кодировка и тип указываются одним и тем же расширением. Например, расширение `.tgz` отображается на `.tar.gz`, чтобы кодировку и тип можно было распознавать по отдельности. Изначально это копия глобального [`suffix_map`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.suffix_map), определённого в модуле.113114#### `encodings_map`115116Словарь, отображающий расширения имён файлов на типы кодировок. Изначально это копия глобального [`encodings_map`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.encodings_map), определённого в модуле.117118#### `types_map`119120Кортеж из двух словарей, отображающих расширения имён файлов на MIME‑типы: первый словарь – для нестандартных типов, второй – для стандартных. Они инициализируются функциями [`common_types`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.common_types) и [`types_map`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.types_map).121122#### `types_map_inv`123124Кортеж из двух словарей, отображающих MIME‑типы на список расширений имён файлов: первый словарь – для нестандартных типов, второй – для стандартных. Они инициализируются функциями [`common_types`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.common_types) и [`types_map`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.types_map).125126#### `guess_extension(type, strict=True)`127128Аналогично функции [`guess_extension()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.guess_extension), но используются таблицы, хранящиеся в составе объекта.129130#### `guess_type(url, strict=True)`131132Аналогично функции [`guess_type()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.guess_type), но используются таблицы, хранящиеся в составе объекта.133134#### `guess_all_extensions(type, strict=True)`135136Аналогично функции [`guess_all_extensions()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.guess_all_extensions), но с использованием таблиц, хранящихся как часть объекта.137138#### `read(filename, strict=True)`139140Загружает информацию MIME из файла с именем *filename*. Для разбора файла используется [`readfp()`](https://python-all.ru/3.7/library/mimetypes.html#mimetypes.MimeTypes.readfp).141142Если *strict* равно `True`, информация добавляется в список стандартных типов, иначе – в список нестандартных.143144#### `readfp(fp, strict=True)`145146Загружает информацию о MIME-типах из открытого файла *fp*. Файл должен иметь формат стандартных файлов `mime.types`.147148Если *strict* равно `True`, информация добавляется в список стандартных типов, иначе – в список нестандартных.149150#### `read_windows_registry(strict=True)`151152Загружает информацию о MIME-типах из реестра Windows.153154[Доступность](https://python-all.ru/3.7/library/intro.html#availability): Windows.155156Если *strict* равно `True`, информация добавляется в список стандартных типов, иначе – в список нестандартных.157158Новое в версии 3.2.159