如何按顺序检索文本文件的每一行 [python 3]



我正在尝试比较两个txt文件并从一个文件中找到新行并将它们写入新文件。

我注意到每次运行程序时,新行都以不同的顺序编写。有没有办法保留原始订单?

我注意到这种疾病源于第 2 行和第 3 行的read().splitlines()

我的代码:

with open("C:/Temp/1_attlog.dat", "r") as f1, open("C:/Temp/attlog.dat","r") as f2, open("C:/Temp/attlog_new.dat", "w") as n:
f_a = set(f1.read().splitlines())
f_b = set(f2.read().splitlines())
for line in f_a:
    count_line += 1
    if line not in f_b:
        print(line)
        count_new_lines += 1
        n.writelines(line)

来自 Python 文档 for Set

集合

是没有重复元素的无序集合。

将每一行保存到一个集合中时,不能保证检索项目的顺序与它们进入时的顺序相同。

更好的选择可能是使用 List,事实上,splitlines() 函数已经返回了一个列表。

您应该能够通过简单地从第 2 行中删除set(...)来修复代码。

with open("C:/Temp/1_attlog.dat", "r") as f1, open("C:/Temp/attlog.dat","r") as f2, open("C:/Temp/attlog_new.dat", "w") as n:
    f_a = f1.read().splitlines() # No more set
    f_b = set(f2.read().splitlines())
    for line in f_a:
        count_line += 1
        if line not in f_b:
            print(line)
            count_new_lines += 1
            n.writelines(line)

最新更新