1

我有一个用python生成文件的脚本,在某些情况下,脚本是用windows中的python执行的,在其他情况下是用cygwin的python执行的

文件的文本是相同的,但如果我使用 difflib,

gen_file_data = open(gen_file)
base_file_data = open(base_file)
gen_file_content = gen_file_data.read().splitlines(True)
base_file_content = base_file_data.read().splitlines(True)
gen_file_data.close()
base_file_data.close()
diff = difflib.unified_diff(gen_file_content, base_file_content, n=0)
diff = ''.join(diff)

文件不同。

而且,如果我使用 md5 得到不同的哈希值。

import hashlib
base_md5 = hashlib.md5(base_file_content).hexdigest()
gen_md5 = hashlib.md5(gen_file_content).hexdigest()
print gen_md5, base_md5

如果我将文件与kdiff3我得到

Files A and B have equal text, but are not binary equal.

如何比较两个文件之间的文本差异?一个是用 windows 的 python 生成的,另一个是用 windows 的 python 生成的。

4

1 回答 1

0

问题可能是行尾编码。Windows 使用 '\r\n',而 unix(cygwin 模拟)使用 '\n'

于 2014-02-20T19:21:12.860 回答