为什么magic.from_buffer返回None?

为什么magic.from_buffer返回None?

问题描述:

这是我得到的时候我打电话magic.from_buffer为什么magic.from_buffer返回None?

>>> import urllib2 
>>> data = urllib2.urlopen('http://www.in.gov/judiciary/opinions/previous/wpd/05040501.bed.doc').read() 
>>> len(data) 
29696 
>>> from lib import magic 
>>> magic.from_buffer(data, mime=True) 

在这一点上,我应提供application/msword,而是我从最后一次通话罢了。我错过了什么?

这适用于我的开发机器,但在我的服务器上失败。我很困惑。

+0

也许两个魔术包之间的版本有所不同? – Thomas 2013-03-01 23:16:31

+0

可能。我的服务器有libmagic1版本5.09-2,而我的开发机器有5.11-2。细微的差别......会很惊讶,如果是这样的话。 – mlissner 2013-03-01 23:19:57

我不知道该问题的原因(可能是版本),但我已经能够与像要解决它:

mime = magic.from_buffer(data, mime=True) 
if mime == None: 
    # Workaround for issue with libmagic1==5.09-2 in Ubuntu 12.04. Fixed in libmagic 5.11-2. 
    file_str = magic.from_buffer(data) 
    if file_str.startswith('Composite Document File V2 Document'): 
     mime = 'application/msword' 

不是很大,但能够完成,直到作业可以升级服务器并获得新版本的libmagic。