使用Python选择并比较两个MD5文件



我想从以下链接中的答案中操作代码:比较python 中两个文件的md5哈希

我的预期结果是搜索我想要比较的两个文件,然后执行脚本的其余部分,以获得是否是"的答案;真"MD5文件匹配,否则"匹配";错误";。

我已经尝试了以下代码:

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])

很遗憾,我收到以下错误:"TypeError:应为str、字节或os。PathLike对象,而不是元组";

提前谢谢。

filedialog.askopenfilenames返回一个元组。这意味着zb,以及for循环的filename迭代器,都是元组。由于将filename(一个元组(传递到open函数中,所以会出现错误。

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

filez = z + b

使用以下代码行修复了上述错误:

filez = z[0], b[0]

最新更新