2012-04-21 53 views
5

Python的MIME类型模块不是特别准确,它的结果基于文件扩展名。我能想到的唯一的办法,以获得更准确的结果是subprocess.Popen调用的Unix file命令像这样:在Python中更好,更准确的MIME类型检测

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

这种感觉不雅。有没有更好的方法来做到这一点没有不得不打电话file但仍然达到相同的准确度?

回答

7

你可以尝试一下:magic's mimetype

+0

这使用与'file'相同的MIME标识码。 – 2012-04-21 22:09:38

+2

确实 - 但它更优雅,这是他所要求的。 :) – Mads 2012-04-21 22:13:01

2

我用的相似,但略有缩减的东西:

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

它可能不是更优雅,但它的短,有点更容易阅读,我总是喜欢那。