python3filecmp返回False,即使很难处理的文件是相同的
我编写了一个Python3脚本,它检查C代码的两个输出文本文件是否相同。 1文件是“想要的”输出文本文件,作为输入/输出文件和赋值的示例,另一个是C代码作为输出给出的输出文件python3filecmp返回False,即使很难处理的文件是相同的,python,python-3.x,text,file-comparison,Python,Python 3.x,Text,File Comparison,我编写了一个Python3脚本,它检查C代码的两个输出文本文件是否相同。 1文件是“想要的”输出文本文件,作为输入/输出文件和赋值的示例,另一个是C代码作为输出给出的输出文件 import filecmp f1="out1.txt" #the output file i got from the assignment as example f2="myout1.txt" #the output file my c code gave for the same input file of f1
import filecmp
f1="out1.txt" #the output file i got from the assignment as example
f2="myout1.txt" #the output file my c code gave for the same input file of f1
f2_copy="myout1 (copy).txt" #copy of f2
print(filecmp.cmp(f1,f2))
print(filecmp.cmp(f2,f2_copy))
我得到的结果是:
>>>False
>>>True
即使文件是错误的,我也会得到False作为输出。
唯一的方法是复制文件,然后执行filecmp.cmp
如果重要的话,我将使用ubto和GCC获取输出文件
谢谢
编辑1:
我制作了一个函数,读取每个文件的行并比较两个列表:
def textCompare(fl1,fl2):
file1 = open(fl1, 'r')
file2 = open(fl2, 'r')
lines1=file1.readlines()
lines2=file2.readlines()
f1.close()
f2.close()
if lines1 == lines2:
return True
else:
return False
如我所见,就我的目的而言,它工作得很好。。。我的问题是,这个函数和我的函数没有检查的filecmp.cmp()之间有什么区别?我猜您可能有空格差异,例如不同的行尾,或者最后一行缺少换行符。磁盘上的文件大小相同吗?你能试试本地的diff工具吗,比如diff?使用Python比较文件并不是一个真正的C语言问题。谢谢你的快速响应。正如我所说,这两个文件是相同的(即相同的大小和内容)。当我尝试使用diff f1 f2时,它给出了与filecmp.cmp(f1,f2)相同的结果,并且可以很好地处理文件的副本…您已经向我们展示了,将它们复制并粘贴到网站中表示它们是相同的,但复制和粘贴过程可能会消除一些细微的差异,或者该网站会忽略这些差异。如果你说diff说它们不同,那么它应该告诉你为什么它认为它们不同。当我使用diff时,我得到的退出代码是“1,31c1,31”(我在文本中有31行)。但它没有告诉我差别在哪里。当我更改其中一个文件的第一个原始值时,仍然会得到相同的退出代码1,31c1,31。