比较两个文件并写入新文件,但只输出几行?

2024-10-02 22:30:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我想比较两个txt文件的所有行,但是当我运行代码时它只响应了几个结果,循环没有有效运行,它似乎在File1中漏掉了很多行,只出现了File1的第一行。在

问题:

我的线圈有问题吗?非常感谢

def compareLines(filename1,filename2):

    File1=open(filename1,'r')
    File2=open(filename2,'r')
    File3=open("Result.txt",'w')

    finalList=[]
    for line1 in File1:
        for line2 in File2:
            set1=set(line1.split(" "))
            set2=set(line2.split(" "))
            print line1
            print line2
            similarNumber=len(set1.intersection(set2))/float(len(set1.union(set2)))
            File3.write('Simmilar rate:'+str(similarNumber)+' '+str(len(set1.intersection(set2)))+" words in incoindence\n")
            finalList.append(similarNumber)

    File1.close()
    File2.close()
    File3.close()

    os.remove(filename1)
    os.remove(filename2)

    return finalList

Tags: incloselenopenfile1file2line1set1
2条回答

多亏了答案上面。还有我特别感谢Nisan.H和Ashwini Chaudhary,我已经通过您的帮助解决了这个问题,只在“forline2 in File2”前加一行~~~

def compareLines(文件名1,文件名2):

File1=open(filename1,'r')
File2=open(filename2,'r')
File3=open("Result.txt",'w')

finalList=[]

for line1 in File1:
    File2.seek(0)
    for line2 in File2:
        set1=set(line1.split(" "))
        set2=set(line2.split(" "))
        print line1
        print line2
        similarNumber=len(set1.intersection(set2))/float(len(set1.union(set2)))
        File3.write('Simmilar rate:'+str(similarNumber)+' '+str(len(set1.intersection(set2)))+" words in incoindence\n")
        finalList.append(similarNumber)

File1.close()
File2.close()
File3.close()

os.remove(filename1)
os.remove(filename2)

return finalList

您应该在内部循环中重新打开File2,或者使用file.seek跳到文件的开头,因为在第一次迭代之后,文件指针位于File2的末尾。在

关于file.seek的帮助:

>>> print file.seek.__doc__
seek(offset[, whence]) -> None.  Move to new file position.

Argument offset is a byte count.  Optional argument whence defaults to
0 (offset from start of file, offset should be >= 0); other values are 1
(move relative to current position, positive or negative), and 2 (move
relative to end of file, usually negative,....

相关问题 更多 >