2013-03-01 5 views
0

Voici ce que je reçois quand je l'appelle magic.from_buffer:Pourquoi magic.from_buffer renvoie 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) 

À ce stade, je devrais être fourni avec application/msword, mais je ne reçois rien du dernier appel. Qu'est-ce que je rate?

Cela fonctionne sur ma machine de développement, mais échoue sur mon serveur. Je suis assez déconcerté.

+0

Peut-être une différence de versions entre les deux paquets 'magic'? – Thomas

+0

Peut-être. Mon serveur a libmagic1 version 5.09-2, alors que ma machine dev a 5.11-2. Différence mineure ... serait surpris si c'était ça. – mlissner

Répondre

0

Je ne sais pas la raison de la question (peut-être la version), mais je suis en mesure de le contourner avec quelque chose comme:

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' 

Pas génial, mais fait le travail jusqu'à ce que Il est possible de mettre à niveau le serveur et d'obtenir une nouvelle version de libmagic.

Questions connexes