我需要一种基于我提取的主机名来比较三个哈希的方法。我有一个功能来比较两个,但希望将它组合起来,在一个函数中完成所有三个。
之前已捕获并存储了所有变量。这只是一次比较检查。
如果可以避免,我不希望我们使用isdiff或其他功能。
需要比较三个结果。
results1 = {'uspn-hs-r3':('uspn-hs-r3','archive \ uspn-hs-r3.cfg','23d516b3f2f438327b1a19fa63868621a87b8c8b')'etc .....
这些值非常可以比较。字符串很长很难显示出来。但是,在这种情况下,主机名是uspn-hs-r3,后跟:,然后是它所在的目录,后跟哈希。
结果2 结果3
双向比较:
for hostname, filename, filehash in results1.values():
if hostname in results2:
_, filename2, filehash2 = results2[hostname]
if filehash != filehash2:
print ("%s has a change (%s, %s)" % (
hostname, filehash, filehash2))
print(filename)
print(filename2)
3方式失败:
for hostname, filename, filehash in results1.values():
if hostname in results2 and hostname in results3:
_, filename2, filehash2, filename3, filehash3 = results3[hostname]
if filehash != filehash2 or filehash != filehash3:
print ("%s has a change (%s, %s)" % (
hostname, filehash, filehash2, filehash3))
print(filename)
print(filename2)
print(filename3)
答案 0 :(得分:2)
第3行有错误。 result3 只有一个大小为3的元组,并且您将其解包为5个值。
for hostname, filename, filehash in results1.values():
if hostname in results2 and hostname in results3:
_, filename2, filehash2 = results2[hostname]
_, filename3, filehash3 = results3[hostname]
if filehash != filehash2 or filehash != filehash3:
print ("%s has a change (%s, %s, %s)" % (
hostname, filehash, filehash2, filehash3))
print(filename)
print(filename2)
print(filename3)