Привязки 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
. Это упоминается только маммадори, и никакой другой ответ не использует его.