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 є 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 є path-like object.

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 має значення None, внутрішня структура даних повністю перебудовується до початкового значення за замовчуванням. Це стабільна операція, яка дає однакові результати при багаторазовому виклику.

Змінено в версії 3.2: Раніше параметри реєстру Windows ігнорувалися.

mimetypes.read_mime_types(filename)

Завантажте карту типів, указану у файлі filename, якщо вона існує. Карта типів повертається як словник, який зіставляє розширення імен файлів, включаючи початкову крапку ('.''), на рядки у формі 'тип/підтип'. Якщо файл filename не існує або не може бути прочитаний, повертається None.

mimetypes.add_type(type, ext, strict=True)

Додайте зіставлення типу MIME type з розширенням ext. Коли розширення вже відомо, новий тип замінить старий. Якщо тип уже відомий, розширення буде додано до списку відомих розширень.

Якщо strict має значення True (за замовчуванням), відображення буде додано до офіційних типів MIME, інакше – до нестандартних.

mimetypes.inited

Прапорець, що вказує, чи ініціалізовано глобальні структури даних. init() встановлює значення True.

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, інформацію буде додано до списку стандартних типів, інакше – до списку нестандартних типів.

Added in version 3.2.