2012-04-21 8 views
5

Pythons Modul mimetypes ist nicht besonders genau und basiert seine Ergebnisse auf der Dateierweiterung. Der einzige Weg, ich denken kann ein genaueres Ergebnis zu erhalten, ist den Unix-Befehl file mit subprocess.Popen als so zu nennen:Bessere, genauere Mime-Typ-Erkennung in Python

unelegant
import subprocess 
mimetype = subprocess.Popen(['file', '/path/to/file', '--mime-type', '-b'], 
    stdout=subprocess.PIPE).stdout.read().strip() 

Das fühlt sich an. Gibt es eine bessere Möglichkeit, dies ohnefile aufrufen, aber immer noch das gleiche Maß an Genauigkeit zu erreichen?

Antwort

7

könnten Sie ausprobieren: magic's mimetype

+0

Dies verwendet den gleichen MIME-Identifikationscode wie 'Datei'. –

+2

Stimmt - aber es ist eleganter, wonach er gefragt hat. :) – Mads

2

ich etwas ähnliches, aber etwas abgekürzt:

import subprocess 
mimeType = subprocess.check_output(['file', '-ib', '/path/to/file']).strip() 

Es ist nicht mehr elegant sein kann, aber es ist kürzer und etwas einfacher zu lesen, und ich immer vorziehen Das.

Verwandte Themen