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.

Не рекомендуется, начиная с версии 3.13: Передача пути к файлу вместо URL - это soft deprecated. Для этого используйте guess_file_type().

mimetypes.guess_file_type(path, *, strict=True)

Определяет тип файла по его пути, заданному path. Аналогична функции guess_type(), но вместо URL принимает путь. Путь может быть строкой, объектом bytes или path-like object.

Added in version 3.13.

mimetypes.guess_all_extensions(type, strict=True)

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

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

mimetypes.guess_extension(type, strict=True)

Определяет расширение файла на основе его MIME-типа, заданного type. Возвращаемое значение - строка с расширением имени файла, включая ведущую точку ('.'). Не гарантируется, что расширение было связано с каким-либо конкретным потоком данных, но оно будет сопоставлено с MIME-типом type с помощью guess_type() и guess_file_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_file_type(path, *, strict=True)

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

Added in version 3.13.

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, то информация будет добавлена в список стандартных типов, иначе - в список нестандартных типов.

Added in version 3.2.