我试图比较两个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)
答案 0 :(得分:1)
来自Set的python文档:
集合是无序集合,没有重复元素。
当您将每一行保存到一个集合中时,检索项目的顺序不能保证与他们进入时的顺序相同。
更好的选择可能是使用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)