使用哈希的三向比较
Three way comparison using hash
我需要一种方法来根据我提取的主机名比较三个哈希值。我有一个比较两个的功能,但希望将它结合起来以在一个功能中完成所有三个功能。
之前已经捕获并存储了所有变量。这只是一个比较检查。
如果可以避免,我不想使用 isdiff 或其他函数。
需要比较三个结果。
results1 = {'uspn-hs-r3': ('uspn-hs-r3', 'archive\uspn-hs-r3.cfg', '23d516b3f2f438327b1a19fa63868621a87b8c8b')' 等等.....
这些值可以非常,因此进行比较。字符串太长无法显示所有内容。但是,在这种情况下,主机名是 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)
您在第 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)
我需要一种方法来根据我提取的主机名比较三个哈希值。我有一个比较两个的功能,但希望将它结合起来以在一个功能中完成所有三个功能。
之前已经捕获并存储了所有变量。这只是一个比较检查。
如果可以避免,我不想使用 isdiff 或其他函数。
需要比较三个结果。
results1 = {'uspn-hs-r3': ('uspn-hs-r3', 'archive\uspn-hs-r3.cfg', '23d516b3f2f438327b1a19fa63868621a87b8c8b')' 等等.....
这些值可以非常,因此进行比较。字符串太长无法显示所有内容。但是,在这种情况下,主机名是 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)
您在第 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)