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

ответ

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

+0

единое пространство? Или что вы имеете в виду? –

+0

Зазор в каждой альтернативной линии – Borys