Содержание страницы
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. Объекты MimeTypes¶MimeTypes 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.