组合多个文本文件而没有重复行的最快方法

时间:2014-11-08 16:50:39

标签: python

我在目录中有几个带有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')

1 个答案:

答案 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))