2015-08-14 3 views

ответ

2

mimetypes.init() полезен, если вы хотите добавить MIME-типы/расширения, выходящие за пределы по умолчанию. Если вам не нужно это делать, тогда не нужно звонить mimetypes.init(); просто используйте служебные функции нормально, и они сами назовут их, если это необходимо. Если вы do необходимо сделать это, кроме mimetypes.init() есть также mimetypes.read_mime_types() и mimetypes.add_type().

Это относится к Python 2 и 3.

+0

Спасибо, это полезно. Хотя я все еще пытаюсь понять, когда это нужно использовать. Например, у меня, похоже, нет проблем с добавлением типов через 'read_mime_types()' и 'add_type' без вызова' init() ' – Michael

+0

' init() 'для инициализации кеша' mimetypes' из файлов карт типов. 'read_mime_types()' просто вернет 'dict', содержащий сопоставления в файле карты типов, не добавляя его в кеш' mimetypes'. 'add_type()' позволяет добавить одно сопоставление в кеш 'mimetypes'. – Cyphase

+0

Существует также класс ['MimeTypes'] (https://docs.python.org/3/library/mimetypes.html#mimetypes-objects), который имеет аналогичный интерфейс с модулем' mimetypes', но позволяет вам более одной базы данных MIME-типа в вашей программе. – Cyphase

0

Согласно mimetypes module documentation:

Функции, описанные ниже, обеспечивают основной интерфейс этого модуля . Если модуль не был инициализирован, они будут вызывать init() , если они полагаются на информацию init().


mimetypes.init(files=None)

Инициализировать внутренние структуры данных. Если задано, файлы должны быть последовательностью имен файлов, которые должны использоваться для увеличения карты типа по умолчанию. Если опущено, используемые имена файлов берутся из известных файлов; в Windows загружаются текущие настройки реестра. Каждый файл с именем в файлах или известных файлах имеет приоритет над именами, указанными перед ним. Повторное вызов init() разрешено.

Задание пустого списка файлов приведет к тому, что системные значения по умолчанию не будут применяться: будет использоваться только в известных значениях.

Это как в Python 2.7, так и в Python 3.x.

+0

Так есть ли причина для вызова init() самостоятельно? или это просто будет вызвано автоматически, когда это необходимо? – Michael

+1

@Michael, вам не нужно беспокоиться о том, чтобы называть это самостоятельно, если вы не хотите настроить mimetype из своего файла типа mime. – falsetru