2014-11-08 28 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

相關問題