我在目录中有几个带有SINGLE COLUMNS的文本文件。我必须通过删除重复的行将它们组合成一个文本文件。 我正在使用以下代码。但是,我的文本文件非常大。那么最好和最快的方法是什么?
import os, glob
files = glob.glob('*.txt')
with open('combinedfile.txt','w') as fo:
all_lines = []
for f in files:
with open(f,'r') as fi:
all_lines.append(fi.read())
all_lines = set(all_lines)
for item in all_lines:
fo.write(item + '\n')
答案 0 :(得分:1)
您正在保存完整的文件内容,而不是单独的行,因此您永远不会找到重复项。我把它转换为readlines
。在写作时,您可以先加入文本并进行一次写入,这样可以为您提供额外的性能。
import os, glob
files = glob.glob('*.txt')
all_lines = []
for f in files:
with open(f,'r') as fi:
all_lines += fi.readlines()
all_lines = set(all_lines)
with open('combinedfile.txt','w') as fo:
fo.write("\n".join(all_lines))