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

MimeTypes.suffix_map

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

MimeTypes.encodings_map

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

MimeTypes.types_map

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

MimeTypes.types_map_inv

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

MimeTypes.guess_extension(type, strict=True)

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

MimeTypes.guess_type(url, strict=True)

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

MimeTypes.guess_all_extensions(type, strict=True)

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

MimeTypes.read(filename, strict=True)

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

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

MimeTypes.readfp(fp, strict=True)

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

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

MimeTypes.read_windows_registry(strict=True)

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

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

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