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

19.5. mimetypes – Сопоставление имён файлов с MIME-типамиmimetypes – Map filenames to MIME types

Исходный код: Lib/mimetypes.py


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

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

Описанные ниже функции предоставляют основной интерфейс для этого модуля. Если модуль не был инициализирован, они вызовут init(), если полагаются на информацию, заданную с помощью init().

mimetypes.guess_type(url, strict=True)

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

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

Необязательный аргумент strict – флаг, определяющий, ограничивается ли список известных MIME-типов только официальными типами, зарегистрированными в IANA. Если strict равно True (по умолчанию), поддерживаются только типы IANA; если strict равно False, также распознаются некоторые дополнительные нестандартные, но часто используемые MIME-типы.

mimetypes.guess_all_extensions(type, strict=True)

Определяет расширения для файла на основе его MIME-типа, заданного параметром type. Возвращаемое значение – список строк, содержащий все возможные расширения имён файлов, включая начальную точку ('.'). Расширения не обязательно были связаны с каким-либо конкретным потоком данных, но будут сопоставляться с MIME-типом type с помощью guess_type().

Необязательный аргумент strict имеет то же значение, что и в функции guess_type().

mimetypes.guess_extension(type, strict=True)

Определяет расширение для файла на основе его MIME-типа, заданного параметром type. Возвращаемое значение – строка, содержащая расширение имени файла, включая начальную точку ('.'). Не гарантируется, что расширение было связано с каким-либо конкретным потоком данных, но оно будет сопоставляться с MIME-типом type с помощью guess_type(). Если для type не удаётся определить расширение, возвращается None.

Необязательный аргумент strict имеет то же значение, что и в функции guess_type().

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

mimetypes.init(files=None)

Инициализирует внутренние структуры данных. Если задан, files должен быть последовательностью имён файлов, которые следует использовать для дополнения карты типов по умолчанию. Если не указан, используемые имена файлов берутся из knownfiles; в Windows загружаются текущие настройки реестра. Каждый файл, указанный в files или knownfiles, имеет приоритет над указанными ранее. Допускается многократный вызов init().

Указание пустого списка для files предотвратит применение системных значений по умолчанию: будут присутствовать только известные значения из встроенного списка.

Изменено в версии 3.2: Ранее настройки реестра Windows игнорировались.

mimetypes.read_mime_types(filename)

Загружает карту типов из файла filename, если он существует. Карта типов возвращается в виде словаря, сопоставляющего расширения файлов, включая начальную точку ('.'), со строками вида 'type/subtype'. Если файл filename не существует или не может быть прочитан, возвращается None.

mimetypes.add_type(type, ext, strict=True)

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

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

mimetypes.inited

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

mimetypes.knownfiles

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

mimetypes.suffix_map

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

mimetypes.encodings_map

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

mimetypes.types_map

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

mimetypes.common_types

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

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

>>> 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'

19.5.1. Объекты MimeTypesMimeTypes Objects

Класс MimeTypes может быть полезен приложениям, которым требуется более одной базы MIME‑типов; он предоставляет интерфейс, похожий на интерфейс модуля mimetypes.

class mimetypes.MimeTypes(filenames=(), strict=True)

Этот класс представляет базу MIME‑типов. По умолчанию он предоставляет доступ к той же базе, что и остальная часть модуля. Изначальная база – копия базы модуля, и её можно расширить, загружая в неё дополнительные файлы в стиле mime.types с помощью методов read() или readfp(). Словари отображений можно очистить перед загрузкой дополнительных данных, если данные по умолчанию не нужны.

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

suffix_map

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

encodings_map

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

types_map

Кортеж из двух словарей, отображающих расширения имён файлов на MIME‑типы: первый словарь – для нестандартных типов, второй – для стандартных. Они инициализируются функциями common_types и types_map.

types_map_inv

Кортеж из двух словарей, отображающих MIME‑типы на список расширений имён файлов: первый словарь – для нестандартных типов, второй – для стандартных. Они инициализируются функциями common_types и types_map.

guess_extension(type, strict=True)

Аналогично функции guess_extension(), но используются таблицы, хранящиеся в составе объекта.

guess_type(url, strict=True)

Аналогично функции guess_type(), но используются таблицы, хранящиеся в составе объекта.

guess_all_extensions(type, strict=True)

Аналогично функции guess_all_extensions(), но с использованием таблиц, хранящихся как часть объекта.

read(filename, strict=True)

Загружает информацию MIME из файла с именем filename. Для разбора файла используется readfp().

Если strict равно True, информация добавляется в список стандартных типов, иначе – в список нестандартных.

readfp(fp, strict=True)

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

Если strict равно True, информация добавляется в список стандартных типов, иначе – в список нестандартных.

read_windows_registry(strict=True)

Загрузка информации о MIME-типах из реестра Windows. Доступность: Windows.

Если strict равно True, информация добавляется в список стандартных типов, иначе – в список нестандартных.

Новое в версии 3.2.