Powiązania Pythona z libmagic
Wszystkie różne odpowiedzi na ten temat są bardzo mylące, więc mam nadzieję, że dam nieco więcej jasności dzięki przeglądowi różnych powiązań libmagic. Wcześniej mammadori udzielił krótkiej odpowiedzi listą dostępnej opcji.
libmagic
Podczas określania typu pliku MIME wybrane narzędzie jest po prostu wywoływane filei wywoływane jest jego zaplecze libmagic. (Zobacz stronę główną projektu .) Projekt jest rozwijany w prywatnym repozytorium cvs, ale na github znajduje się tylko do odczytu mirror git .
Teraz to narzędzie, które będzie potrzebne, jeśli chcesz używać dowolnego z powiązań libmagic z pythonem, ma już swoje własne, zwane powiązania z pythonem file-magic. Nie ma zbyt wiele dedykowana dokumentacja dla nich, ale zawsze można rzucić okiem na stronę man c-biblioteki: man libmagic. Podstawowe użycie opisano w pliku 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)
Oprócz tego możesz również korzystać z biblioteki, tworząc Magicobiekt za pomocą, magic.open(flags)jak pokazano w przykładowym pliku .
Zarówno toivotuo, jak i ewr2san używają tych file-magicwiązań zawartych w filenarzędziu. Błędnie zakładają, że używają python-magicpakietu. Wydaje się to wskazywać, że jeśli oba filei python-magicsą instalowane, moduł python magicodnosi się do tej pierwszej.
python-magic
Jest to biblioteka, o której mówi Simon Zimmermann w swojej odpowiedzi i która jest również wykorzystywana przez Claude'a COULOMBE, a także Gringo Suave .
filemagiczny
Uwaga : ten projekt został ostatnio zaktualizowany w 2013 roku!
Ponieważ ta biblioteka oparta jest na tym samym c-api, ma pewne podobieństwo z file-magiczawartą w libmagic. Wspomina o tym tylko mammadori i żadna inna odpowiedź go nie stosuje.