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.