mimetypes — Сопоставление имен файлов с типами MIME

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


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

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

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

mimetypes.guess_type(url, strict=True)

Угадайте тип файла по его имени, пути или URL, заданному url. URL может быть строкой или path-like object.

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

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

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

Изменено в версии 3.8: Добавлена поддержка для url, являющегося path-like object.

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 предотвратит применение системных значений по умолчанию: из встроенного списка будут присутствовать только известные значения.

Если files имеет значение None, то внутренняя структура данных полностью перестраивается до первоначального значения по умолчанию. Это стабильная операция, и при многократном вызове будут получены те же результаты.

Изменено в версии 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'

Объекты MimeTypes

Класс 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.

Availability: Windows.

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

Добавлено в версии 3.2.

Вернуться на верх