在Python中,你如何获取内容

可能重复:
如何在Python中找到文件的MIME类型?

我正在使用电子邮件处理API(sendgrid.com)将所有传入的电子邮件发布到我的应用中的Web请求处理程序。 附件发布为attachment0 = xyz&attachment1 = abc以及其他电子邮件字段,例如'to''cc''主题'等。

然后我将这些附件作为文件存储在BlobStore中(使用App Engine)。 要将这些文件返回给用户,必须指定mime_type / content_type。 据我了解,它通常取决于文件类型。 但是我不清楚如何从传递的字符串中获取文件类型。

有没有一个库可以从文件的字节内容中找出文件类型?

只是为了澄清,没有文件名或文件扩展名。 只是文件的字节内容。


如果您在上传文件时保存了文件名,那么您可以使用mimetypes.guess_type函数在此处进行拍摄。 亚历山大联系在一起的SO问题很好阅读。

不幸的是,那不是你的情况。 如果你拥有的只是一个二进制的blob,恐怕你必须在这里进行一些自定义的启发式。 遵循以下简单的步骤:

  • 建立已知签名的地图。 我马上举个例子。
  • 读取blob中的前4个字节。
  • 根据你在步骤1中建立的地图做一个最长的匹配。通过最长匹配,我的意思是如果所有4个字节匹配,接下来,然后尝试前3个字节,前2个,最后是前1个。
  • 例如:

    ZIP文件以两个字符PK开头,RAR文件以Rar!开头Rar! ,PDF以%PDF开头,PNG以x89PNG等等

    这将无法识别某些文件(如JPG),但您在这里建立起来有一个很好的开始。

    或者,您也可以使用https://github.com/ahupp/python-magic。

    链接地址: http://www.djcxy.com/p/46793.html

    上一篇: In Python, how do you get the content

    下一篇: How to guess the type of a file in python?