在python中,我需要打印两个二进制文件的diff。我在看difflib.Differ
,它做了很多事情。
然而,差异假定文本行,因此输出不会列出字节索引和十六进制值的差异。
我需要的是输出,哪个字节不同,字节如何不同,两个字节的实际十六进制值。
在Python中,如何比较两个二进制文件(输出:字节差异索引,两个字节的十六进制值)?
我当时在做的事情是:
# /usr/bin/env python2
import difflib
x = open('/path/to/file1', 'r').read()
y = open('/path/to/file2', 'r').read()
print '\n'.join(difflib.Differ().compare(x, y))
但这并不输出有差别的字节索引,也不输出十六进制值。
2条答案
按热度按时间a6b3iqyw1#
当difflib进行比较时,它会把每个字符放入一个前面有+或-的数组中。下面我们比较x和y,然后看看输出:
字符将以不匹配的“-”开头。“+”表示它们匹配。
iibxawm42#
shell命令
cmp
已经完成了我所需要的功能。在Python中重新发明这个功能需要更多的工作/代码/时间......所以我只是从Python中调用了这个命令: