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 fileund 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 MagicObjekt erstellen , magic.open(flags)wie in der Beispieldatei gezeigt .
Sowohl toivotuo als auch ewr2san verwenden diese file-magicim fileTool enthaltenen Bindungen . Sie nehmen fälschlicherweise an, dass sie das python-magicPaket verwenden. Dies scheint darauf hinzudeuten, dass sich das Python-Modul auf das vorherige bezieht , wenn beide fileund python-magicinstalliert 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-magicder in libmagic. Es wird nur von Mammadori erwähnt und keine andere Antwort verwendet es.