2013-03-01 161 views
0

這是我得到的時候我打電話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

回答

0

我不知道該問題的原因(可能是版本),但我已經能夠與像要解決它:

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。

相關問題