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

2024-09-28 05:23:34 发布

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

我试图比较两个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)

Tags: 文件innewreadascountlineopen
1条回答
网友
1楼 · 发布于 2024-09-28 05:23:34

Set的python文档中:

A set is an unordered collection with no duplicate elements.

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

更好的选择可能是使用List,实际上,^{}函数已经返回了一个列表。你知道吗

只需从第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)

相关问题 更多 >

    热门问题