Содержание страницы
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. URL может быть строкой или path-подобным объектом.
Возвращаемое значение – кортеж
(type, encoding), где type равенNone, если type не удалось определить (отсутствует или неизвестно расширение), или строка вида'type/subtype', пригодная для использования в заголовке MIME content-type.encoding равен
Noneпри отсутствии кодирования или имени программы, использованной для кодирования (например, compress или gzip). Кодировка подходит для использования в качестве заголовка Content-Encoding, не в качестве заголовка Content-Transfer-Encoding. Отображения управляются таблицами. Суффиксы кодировок чувствительны к регистру; суффиксы типов сначала проверяются с учётом регистра, затем без учёта.Необязательный аргумент strict – это флаг, указывающий, ограничивается ли список известных MIME-типов только официальными типами, зарегистрированными в IANA. Однако поведение этого модуля также зависит от операционной системы. Могут быть идентифицированы только те типы файлов, которые распознаются ОС или явно зарегистрированы во внутренней базе данных Python. Когда strict равен
True(значение по умолчанию), поддерживаются только типы IANA; когда strict равенFalse, распознаются также некоторые дополнительные нестандартные, но часто используемые MIME-типы.Изменено в версии 3.8: Добавлена поддержка url в качестве path-подобного объекта.
Мягко устарело с версии 3.13: Передача пути к файлу вместо URL. Используйте для этого
guess_file_type().
- mimetypes.guess_file_type(path, *, strict=True)¶
Определяет тип файла по его пути, заданному path. Аналогично функции
guess_type(), но принимает путь вместо URL. Путь может быть строкой, объектом bytes или path-подобным объектом.Добавлено в версии 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 objects
Класс 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(), но используются таблицы, хранящиеся в составе объекта.Добавлено в версии 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.
Доступность: Windows.
Если strict равно
True, информация добавляется в список стандартных типов, иначе – в список нестандартных.Добавлено в версии 3.2.
- add_type(type, ext, strict=True)¶
Добавляет соответствие между MIME-типом type и расширением ext. Допустимые расширения начинаются с точки «.» или пусты. Если расширение уже известно, новый тип заменяет старый. Если тип уже известен, расширение добавляется в список известных расширений.
Если strict равно
True(значение по умолчанию), соответствие добавляется в официальные MIME-типы, иначе – в нестандартные.Устарело с версии 3.14, будет удалено в версии 3.16: Недопустимые расширения без точки будут вызывать
ValueErrorв Python 3.16.
Использование командной строки¶Command-line usage
Модуль mimetypes можно запускать как скрипт из командной строки.
python -m mimetypes [-h] [-e] [-l] type [type ...]
Принимаются следующие опции:
По умолчанию скрипт преобразует MIME-типы в расширения файлов. Однако если указан --extension, он преобразует расширения файлов в MIME-типы.
Для каждой записи type скрипт выводит строку в стандартный поток вывода. При обнаружении неизвестного типа он выводит сообщение об ошибке в стандартный поток вывода и завершается с кодом возврата 1.
Пример командной строки¶Command-line example
Ниже приведены несколько примеров типичного использования интерфейса командной строки mimetypes:
$ # Получить MIME-тип по имени файла
$ python -m mimetypes filename.png
type: image/png encoding: None
$ # Получить MIME-тип по URL
$ python -m mimetypes https://example.com/filename.txt
type: text/plain encoding: None
$ # Получить составной MIME-тип
$ python -m mimetypes filename.tar.gz
type: application/x-tar encoding: gzip
$ # Получить MIME-тип для редкого расширения файла
$ python -m mimetypes filename.pict
error: media type unknown for filename.pict
$ # Теперь ищем в расширенной встроенной базе Python
$ python -m mimetypes --lenient filename.pict
type: image/pict encoding: None
$ # Получить расширение файла по MIME-типу
$ python -m mimetypes --extension text/javascript
.js
$ # Получить расширение файла по редкому MIME-типу
$ python -m mimetypes --extension text/xul
error: unknown type text/xul
$ # Теперь снова ищем в расширенной базе данных
$ python -m mimetypes --extension --lenient text/xul
.xul
$ # попробовать передать неизвестное расширение файла
$ python -m mimetypes filename.sh filename.nc filename.xxx filename.txt
type: application/x-sh encoding: None
type: application/x-netcdf encoding: None
error: media type unknown for filename.xxx
type: text/plain encoding: None
$ # попробовать передать неизвестный MIME-тип
$ python -m mimetypes --extension audio/aac audio/opus audio/future audio/x-wav
.aac
.opus
error: unknown type audio/future