Python:使用Hachoir,如何提取文件类对象的元数据?

前端之家收集整理的这篇文章主要介绍了Python:使用Hachoir,如何提取文件类对象的元数据?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我正在使用用户上传视频和音频文件的网站,我上传时,必须从文件中填充一些常见的元数据字段.我找到了Hachoir并且它看起来不错,但是有问题的是,要创建用于元数据读取的解析器,需要的是文件名,而不是文件类或流对象.

现在我正在使用Django进行Web开发,我想继续使用FileStorage API,因此可以很好地将文件上传到CDN.

如何使用Hachoir文件像对象?他们提供的sample code作品,但仅适用于“真实”文件.

最佳答案
快速和脏的片段:

  1. from hachoir_core.error import HachoirError
  2. from hachoir_core.stream import InputIOStream
  3. from hachoir_parser import guessParser
  4. from hachoir_Metadata import extractMetadata
  5. def Metadata_for_filelike(filelike):
  6. try:
  7. filelike.seek(0)
  8. except (AttributeError,IOError):
  9. return None
  10. stream = InputIOStream(filelike,None,tags=[])
  11. parser = guessParser(stream)
  12. if not parser:
  13. return None
  14. try:
  15. Metadata = extractMetadata(parser)
  16. except HachoirError:
  17. return None
  18. return Metadata

只需要更好的错误处理:)

猜你在找的Python相关文章