我想从以下链接中的答案中操作代码:比较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
返回一个元组。这意味着z
和b
,以及for循环的filename
迭代器,都是元组。由于将filename
(一个元组(传递到open函数中,所以会出现错误。
解决这个问题的方法可以是简单地连接元组。
filez = z + b
使用以下代码行修复了上述错误:
filez = z[0], b[0]