2013-03-01 2 views
0

는 여기에 내가 무엇을 얻을 :왜 magic.from_buffer가 None을 반환합니까? 내가 <code>magic.from_buffer</code>를 호출 할 때

이 시점에서
>>> 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

2 개의 '마법'패키지 사이의 버전이 다를 수 있습니까? – Thomas

+0

가능합니다. 내 서버에는 libmagic1 버전 5.09-2가 있고 내 dev 컴퓨터에는 5.11-2가 있습니다. 사소한 차이는 ... 그것이 그랬다면 놀랄 것입니다. – mlissner

답변

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의 새 버전을 구할 수 있습니다.