Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python3filecmp返回False,即使很难处理的文件是相同的_Python_Python 3.x_Text_File Comparison - Fatal编程技术网

python3filecmp返回False,即使很难处理的文件是相同的

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

我编写了一个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
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。