Python-Bindungen an libmagic
All die unterschiedlichen Antworten zu diesem Thema sind sehr verwirrend, daher hoffe ich, mit diesem Überblick über die verschiedenen Bindungen von libmagic etwas mehr Klarheit zu schaffen. Zuvor gab Mammadori eine kurze Antwort mit der Auflistung der verfügbaren Option.
libmagic
Bei der Bestimmung des MIME-Typs einer Datei wird einfach das Tool Ihrer Wahl aufgerufen file
und sein Back-End aufgerufen libmagic
. (Siehe die Projekthomepage .) Das Projekt wird in einem privaten CVS-Repository entwickelt, aber auf Github befindet sich ein schreibgeschützter Git-Spiegel .
Dieses Tool, das Sie benötigen, wenn Sie eine der libmagischen Bindungen mit Python verwenden möchten, enthält bereits eigene Python-Bindungen file-magic
. Es gibt nicht viel dedizierte Dokumentation für sie, aber Sie können immer einen Blick auf die Manpage der C-Bibliothek werfen : man libmagic
. Die grundlegende Verwendung wird in der Readme-Datei beschrieben :
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)
Abgesehen davon können Sie die Bibliothek auch verwenden, indem Sie ein Magic
Objekt erstellen , magic.open(flags)
wie in der Beispieldatei gezeigt .
Sowohl toivotuo als auch ewr2san verwenden diese file-magic
im file
Tool enthaltenen Bindungen . Sie nehmen fälschlicherweise an, dass sie das python-magic
Paket verwenden. Dies scheint darauf hinzudeuten, dass sich das Python-Modul auf das vorherige bezieht , wenn beide file
und python-magic
installiert sind magic
.
Python-Magie
Dies ist die Bibliothek, über die Simon Zimmermann in seiner Antwort spricht und die auch von Claude COULOMBE sowie Gringo Suave verwendet wird .
filemagisch
Hinweis : Dieses Projekt wurde zuletzt im Jahr 2013 aktualisiert!
Da diese Bibliothek auf derselben c-api basiert, hat sie eine gewisse Ähnlichkeit mit file-magic
der in libmagic
. Es wird nur von Mammadori erwähnt und keine andere Antwort verwendet es.