首页 > 解决方案 > 是否可以在 python 中获取临时文件的 md5 哈希?

问题描述

我从电子邮件消息对象中获取附件并创建一个临时文件,如下所示:

import tempfile

with tempfile.NamedTemporaryFile() as temp:
    temp.write(payload.get_payload(decode=True))

是否有可能从这个临时文件中取出 md5,还是我必须将它保存到磁盘然后再获得 md5?我的目标是这样的:

import hashlib
print(hashlib.md5(temp).hexdigest())

但我遇到了这个错误

TypeError: object supporting the buffer API required

标签: python

解决方案


当您调用 hashlib.md5 命令时,它确实需要一个类似对象的字符串,而不是文件句柄。但猜猜你已经拥有了什么。所以没有必要从文件中读回它。

import tempfile
import hashlib

with tempfile.NamedTemporaryFile() as temp:
    data = payload.get_payload(decode=True)
    temp.write(data)
    print(hashlib.md5(data).hexdigest())

推荐阅读