我创建了一个简单的校验和脚本,它检查一个名为tecu.a2l的文件的校验和,并将其与几个.md5文件进行比较,以确保每当此脚本运行时,它们都具有完全相同的校验和。你知道吗
为了让事情更容易理解:
假设tecu.a2l的校验和为1x2x3x,那么md5文件(如果生成正确)应该具有相同的校验和(1x2x3x)。如果其中一个md5文件的校验和与最新的tecu.a2l文件的校验和不同,它将给出一个错误。你知道吗
如果您不太理解我的描述,希望代码可以填补空白。你知道吗
import hashlib
import dst_creator_constants as CONST
import Tkinter
path_a2l = 'C:<path>\tecu.a2l'
md5 = hashlib.md5()
blocks = 65565
with open(path_a2l, 'rb') as a2l:
readA2L = a2l.read(blocks)
generatedMD5 = md5.hexdigest()
print "stop1"
ihx_md5_files = CONST.PATH_DELIVERABLES_DST
for file in ihx_md5_files:
print "stop2"
if file.endswith('.md5'):
print "stop3"
readMD5 = file.read()
if compare_checksums:
print "Yes"
# Add successful TkInter msg here
else:
print "No"
# Add error msg here
def compare_checksums(generatedMD5, readMD5):
if generatedMD5 == readMD5:
return True
else:
return False
当我运行这个脚本时,什么也没发生。没有消息,什么都没有。如果我在cmd中输入python checksum.py
,它不会返回任何消息。所以我加入了一些print
语句来看看问题所在。问题是stop3
从未在命令提示符中显示-这意味着问题与if file.endswith('.md5'):
语句有关。你知道吗
我不知道为什么它是罪魁祸首,因为我在以前的脚本中使用了这个file.endswith()
语句,我写了一个与此相关的脚本,它在那里起了作用,所以我转向你。你知道吗
您没有创建哈希对象。文件保留在
readA2L
变量中。此外,您的文件可能比您允许的65565字节缓冲区大。尝试像下面的函数一样更新hasher,并让我们知道结果是什么。你知道吗相关问题 更多 >
编程相关推荐