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 一个元组。这意味着 z
和 b
以及 for 循环的 filename
迭代器是元组。您收到错误是因为您将元组 filename
传递给打开的函数。
解决这个问题的一种方法是简单地连接元组。
filez = z + b
我想根据以下 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 一个元组。这意味着 z
和 b
以及 for 循环的 filename
迭代器是元组。您收到错误是因为您将元组 filename
传递给打开的函数。
解决这个问题的一种方法是简单地连接元组。
filez = z + b