Select 并使用 Python 比较两个文件的 MD5

Select and compare two files MD5 using Python

我想根据以下 link 中找到的答案来操作代码:

我的预期结果是搜索我要比较的两个文件,然后执行脚本的其余部分,以回答 MD5 文件匹配是否为“True”,否则为“False” .

我试过以下代码:

import hashlib
from tkinter import *
from tkinter import filedialog

digests = []

z = filedialog.askopenfilenames(initialdir="/", title="Browse Files", filetypes=(("excel files", "*.xlsx"),
                                                                                             ("all files", "*.*")))

b = filedialog.askopenfilenames(initialdir="/", title="Browse Files", filetypes=(("excel files", "*.xlsx"),
                                                                                             ("all files", "*.*")))
filez = z, b

for filename in filez:
    hasher = hashlib.md5()
    with open(filename, 'rb') as f:
        buf = f.read()
        hasher.update(buf)
        a = hasher.hexdigest()
        digests.append(a)
        print(a)

print(digests[0] == digests[1])

不幸的是,我收到以下错误: “类型错误:应为 str、字节或 os.PathLike 对象,而不是元组”

提前致谢。

已修复上述错误,如使用这行代码所述:

filez = z[0], b[0]

filedialog.askopenfilenames returns 一个元组。这意味着 zb 以及 for 循环的 filename 迭代器是元组。您收到错误是因为您将元组 filename 传递给打开的函数。

解决这个问题的一种方法是简单地连接元组。

filez = z + b