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


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

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

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

mimetypes.guess_type(url, strict=True)

Угадывает тип файла на основе его имени файла, пути или URL-адреса, заданного 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 типы.

Изменено в версии 3.8: Добавлена поддержка URL-адреса путеподобного объекта.

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.

Доступность: Windows.

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

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