Python,比较2个txt文件,在第2个txt文件中找到独特的行并输出到一个新的txt文件

Python, compare 2 txt files, find unique lines in the 2nd txt file and output to a new txt file

尝试了一堆代码,这是我得到的最后一行代码,但不是全部。正如标题所说,我正在尝试从第二个 txt 文件中找到唯一的行并输出到一个新的 txt 文件。

list1 = open('C:\1.txt','r',encoding='utf-8')
list2 = open('C:\2.txt','r',encoding='utf-8')

list_difference = []
for item in list2:
  if item not in list1:
    list_difference.append(item)

with open('some_output_file.txt','w',encoding='utf-8') as file_out:
    for line in item:
        file_out.write(line)```
list1 = open('C:\1.txt','r',encoding='utf-8').readlines()
list2 = open('C:\2.txt','r',encoding='utf-8').readlines()
# .readlines() returns a list of each line in the file.

list_difference = []
for item in list2:
  if item not in list1:
    list_difference.append(item)

with open('some_output_file.txt','w',encoding='utf-8') as file_out:
    for line in list_difference:
        file_out.write(line)

这会将文本文件的每一行输出到相应的列表中。然后将这些唯一行写入 'some_output_file.txt'.

为了更快的解决方案,将列表转换为集合:

list1 = open("file1.txt", "r", encoding="utf-8").readlines()
list2 = open("file2.txt", "r", encoding="utf-8").readlines()

set1 = set(list1)
set2 = set(list2)
print(f"len set1 {len(set1)}")
print(f"len set2 {len(set2)}")

# free the memory used by the lists
del list1
del list2

set_diff = set()
for item in set2:
    if item not in set1:
        set_diff.add(item)

print(f"len set_diff {len(set_diff)}")
print(set_diff)

检查 item in set 以恒定的 O(1) 时间运行,而列表是 O(n)。

干杯!