2014-11-08 30 views
1

我有几个文本文件与目录中的单一列。我必须通过删除重复的行将它们合并成一个文本文件。 我正在用下面的代码。但是,我的文本文件非常大。那么做到最好和最快的方式是什么?最快的方式来结合几个文本文件没有重复的行

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

我正在使用Python 2.7 – Borys 2014-11-08 16:52:24

回答

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)) 
+0

但为什么代码在outfile中的每行之后都产生空格? – Borys 2014-11-08 17:39:55

+0

单个空间?或者你是什么意思? – 2014-11-08 17:42:13

+0

每个备选行中的差距 – Borys 2014-11-08 17:46:21

相关问题