Привязки Python к libmagic
Все разные ответы на эту тему очень запутаны, поэтому я надеюсь дать немного большей ясности в этом обзоре различных привязок libmagic. Ранее Маммадори дал краткий ответ с перечислением доступных вариантов.
libmagic
При определении MIME-типа файлов просто вызывается инструмент выбора и вызывается fileего серверная часть libmagic. (См. Домашнюю страницу проекта .) Проект разработан в частном cvs-хранилище, но на github есть зеркало git , доступное только для чтения. .
Теперь этот инструмент, который вам понадобится, если вы хотите использовать какие-либо привязки libmagic с python, уже поставляется с собственными привязками python, которые называются file-magic. Существует не так много посвященных документаций для них, но вы всегда можете посмотреть на человек странице с-библиотеке: man libmagic. Основное использование описано в файле readme :
import magic
detected = magic.detect_from_filename('magic.py')
print 'Detected MIME type: {}'.format(detected.mime_type)
print 'Detected encoding: {}'.format(detected.encoding)
print 'Detected file type name: {}'.format(detected.name)
Помимо этого, вы также можете использовать библиотеку, создав Magicобъект, используя, magic.open(flags)как показано в файле примера .
И toivotuo, и ewr2san используют эти file-magicпривязки, включенные в fileинструмент. Они ошибочно предполагают, что используют python-magicпакет. Кажется, это указывает на то, что если оба fileи python-magicустановлены, модуль python magicссылается на первый.
питон-магия
Это библиотека, о которой говорит Саймон Циммерман в своем ответе, и которая также используется Клодом Куломбом и Гринго Суаве .
filemagic
Заметка : последний раз проект обновлялся в 2013 году!
Благодаря тому, что эта библиотека основана на одном и том же c-api, она имеет некоторое сходство с file-magicвключенной в libmagic. Это упоминается только маммадори, и никакой другой ответ не использует его.