# `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-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: Added support for url being a path-like object.

mimetypes.guess_all_extensions(type, strict=True)

  Guess the extensions for a file based on its MIME type, given by type. The return value is a list of strings giving all possible filename extensions, including the leading dot (`'.'`). The extensions are not guaranteed to have been associated with any particular data stream, but would be mapped to the MIME type type by `guess_type()`.

  Необов’язковий аргумент strict має те саме значення, що й функція `guess_type()`.

mimetypes.guess_extension(type, strict=True)

  Guess the extension for a file based on its MIME type, given by type. The return value is a string giving a filename extension, including the leading dot (`'.'`). The extension is not guaranteed to have been associated with any particular data stream, but would be mapped to the MIME type type by `guess_type()`. If no extension can be guessed for type, `None` is returned.

  Необов’язковий аргумент 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.

    Availability: Windows.

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

    Нове в версії 3.2.