【发布时间】:2017-07-26 13:58:55
【问题描述】:
在 python 中,我需要打印两个二进制文件的差异。我在看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))
但这不会输出差异所在的字节索引。而且它不打印十六进制值。
【问题讨论】:
-
我也可以不使用
difflib。但我觉得应该有一个使用difflib的优雅解决方案。 -
我刚刚阅读了手册页
man 1 cmp并看到“逐字节比较两个文件......--verbose 输出字节数和不同的字节值”......我有一个偷偷摸摸的怀疑,只是从 python 调用 cmp 命令将是最优雅的解决方案。 -
cmp还涵盖了所有边缘情况(例如一个文件比另一个文件大,等等)。
标签: python debugging hex diff instrumentation