【问题标题】:Why is magic.from_buffer returning None?为什么magic.from_buffer 返回None?
【发布时间】:2013-03-01 23:13:46
【问题描述】:

这是我拨打magic.from_buffer 时得到的信息:

>>> 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,但我从上次通话中一无所获。我错过了什么?

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

【问题讨论】:

  • 可能是两个magic 包的版本不同?
  • 可能。我的服务器有 libmagic1 版本 5.09-2,而我的开发机器有 5.11-2。细微的差别......如果是这样的话,我会感到惊讶。

标签: python python-magic


【解决方案1】:

我不确定问题的原因(可能是版本),但我已经能够通过以下方式解决它:

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。

【讨论】:

    猜你喜欢
    • 2013-07-13
    • 1970-01-01
    • 1970-01-01
    • 2018-11-29
    • 2015-06-18
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多