擅长:python、mysql、java
<p>我只建议:</p>
<pre><code>def get_digest(file_path):
h = hashlib.sha256()
with open(file_path, 'rb') as file:
while True:
# Reading is buffered, so we can read smaller chunks.
chunk = file.read(h.block_size)
if not chunk:
break
h.update(chunk)
return h.hexdigest()
</code></pre>
<p>所有其他的答案似乎都太复杂了。Python在读取时已经在缓冲了(以理想的方式,或者如果您有更多关于底层存储的信息,您可以配置该缓冲),因此最好是分块读取hash函数找到的理想值,这样可以加快计算hash函数的速度,或者至少减少计算hash函数所需的CPU。因此,与其禁用缓冲并试图自己模拟它,不如使用Python缓冲并控制应该控制的内容:数据使用者发现的理想值,散列块大小。</p>