比较 2 个文本文件并输出差异

Compare 2 text files and output a difference

我有两个文本文件:

第一个文本文件:

email1@domain.com:password
email2@domain.com:password
email3@domain.com:password
email4@domain.com:password
email5@domain.com:password

第二个文本文件:

email3@domain.com:password
email5@domain.com:password

如何不考虑行号输出它们之间的差异?我要输出第三个文件:

第三个文本文件:

email1@domain.com:password
email2@domain.com:password
email4@domain.com:password

假设用户名和密码用冒号分隔,那么你可以这样做:

files = ['file1.txt', 'file2.txt']
usernames = [set(), set()]
for i, file in enumerate(files):
    with open(file) as infile:
        for line in infile:
            usernames[i].add(line.split(':')[0])
for d in usernames[0] - usernames[1]:
    print(d)
file1Lines = open("file1.txt", "r").readlines()
file2Lines = open("file2.txt", "r").readlines()
file1Lines.close()
file2Lines.close()
file3LinesOutput = []
for line in file1Lines:
    if line not in file2Lines:
        file3LinesOutput.append(line)
file3 = open("file3.txt", "w")
file3.writelines(file3LinesOutput)
filr3.close()

这应该可以满足您的要求。它会将第一个文件中但不在第二个文件中的每一行添加到第三个文件

您可以将其拆分成一个列表。

假设第一个文本存储在变量first_text中,第二个文本second_text.

因为唯一区别彼此的是断线,您可以将它们分开:

first_list = first_text.split('\n')
second_list = second_text.split('\n')

那么,现在您已将所有电子邮件分隔在列表中。从这里您可以比较两个列表并存储在 output_text.

output_list = first_list
for email_first in first_list:
    for email_second in second_list:
        if (email_first == email_second):
            output_list.remove(email_first)

请注意,这是针对您的特定示例,并未正确涵盖第二个列表大于第一个列表的情况。