比较python中的两个文本文件

比较python中的两个文本文件,python,Python,我试图比较文本文件,并在第三个文件中输出相同的内容,但它不起作用 这两个文件有六行 ,第一个是这样的 name 50 60 77 88 name 33 55 76 45 name 22 43 65 87 name 44 65 87 90 name 54 07 67 08 第二个是 name 77 32.88 name 86 66.9 name 55 34.8 name 34 88.9 name 42 77.6 name 22 65.9 我想匹配这些名字以获得其他信息 这就是我所做的

我试图比较文本文件,并在第三个文件中输出相同的内容,但它不起作用 这两个文件有六行 ,第一个是这样的

name 50 60 77 88
name 33 55 76 45
name 22 43 65 87
name 44 65 87 90
name 54 07 67 08
第二个是

name 77 32.88
name 86  66.9
name 55  34.8
name 34  88.9
name 42  77.6
name 22  65.9
我想匹配这些名字以获得其他信息

这就是我所做的

file1 = open("file1.txt", "r")
file2 = open("file2.txt", "r")
file3 = open("resultss.txt", "w")
list1 = file1.readlines()
list2 = file2.readlines()
file3.write("here: \n")
for i in list1:
    for j in list2:
        if  i==j:
            file3.write(i)

看看标准库中的模块(更具体地说,是
difflib.unified\u diff
函数)。它为您完成了所有工作;)

正如其他人所说,您应该在使用完文件后关闭它们,这是一种良好的做法:

with open("filepath/file.txt", "r") as file1:
    some code here...
完成“此处的某些代码”位后,将自动为您关闭文件

这里有一种从文件中获取名称和信息的方法。。使用re模块(正则表达式)

这将产生如下输出:

['name: nameb - grades: 50 60 77 88 34 88.9',
 'name: namek - grades: 33 55 76 45 22 65.9', 
 'name: namem - grades: 22 43 65 87 42 77.6', 
 'name: Garry - grades: 44 65 87 90 86 66.9', 
 'name: Brian - grades: 54 07 67 08 77 32.88']
显然,您可以将其格式化为不同的格式

全部功能:

def compare_files():

    files = ["file1", "file2"]
    file_list = []

    for file in files:
        with open("filepath/%s.txt", % file "r") as f:
            file_list.append(f.readlines())

    text1 = [i.split() for i in file_list[0]]
    text2 = [i.split() for i in file_list[1]]

    r = []
    for i in text1:
        for j in text2:
            if i[0] == j[0]:
            r.append('name: %s - grades: %s %s' % (i[0], ' '.join(i[1:]), ' '.join(j[1:])))
    #if file f3 doesn't exist this will create it
    with open("filepath/file3.txt", "w") as f3:
        for line in r:
            f3.write(i + '\n')

您应该在完成操作后关闭文件。因此,您应该在代码末尾添加以下代码:

file1.close()
file2.close()
file3.close()

我希望这能对您有所帮助。

如果
file1.txt的
I
行与
file2.txt的
I
行相同,您是否希望打印该行?因此,您希望匹配名称,并有第三个文件,其中包含名称和名称的所有信息不要忘记关闭所有这些文件。但是最好使用
和。。。正如
syntax.我做了,但还是有点不对劲,谢谢!是否要确保两个文件完全相同?或者你只想找到一些相同的行吗?我在第一个文件中有ID和等级,在另一个文件中有关于这些人的姓名和其他信息,所以我想匹配ID以更新名称栏,以包括第三个文件的写入。查看如何使用python教程进行文件输入/输出。希望这有帮助。
file1.close()
file2.close()
file3.close()