gpt4 book ai didi

python - 在 Python 中生成多个文件的一个 MD5/SHA1 校验和

转载 作者:行者123 更新时间:2023-11-28 22:39:22 26 4
gpt4 key购买 nike

我浏览了几个关于用 Python 计算文件校验和的主题,但没有一个能回答关于多个文件的一个总和的问题。我在子目录中有几个文件,想确定其中一个或多个文件是否有任何更改。有没有办法从多个文件生成一个总和?

编辑:这是我获取总和列表的方法:

checksums = [(fname, hashlib.md5(open(fname, 'rb').read()).digest()) for fname in flist]

最佳答案

比 Artur 的回答稍微干净一些。无需特殊处理第一个元素。

编辑(2022):我现在对 Python 了解多了一点,所以我更新了代码如下:

  • 使用 pathlib - 它更符合人体工程学,不会让文件保持打开状态。
  • 添加类型提示。如果您不使用这些,那您就错了。
  • 避免非常轻微的 TOCTOU 问题。
import hashlib
from pathlib import Path

def calculate_checksum(filenames: list[str]) -> bytes:
hash = hashlib.md5()
for fn in filenames:
try:
hash.update(Path(fn).read_bytes())
except IsADirectoryError:
pass
return hash.digest()

(您可以根据需要以不同方式处理 IsADirectoryError。)

关于python - 在 Python 中生成多个文件的一个 MD5/SHA1 校验和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34807537/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com