Как открыть большое количество файлов для цикла? - PullRequest
0 голосов
/ 15 января 2011

У меня есть файл с разделителями табуляции, как этот

tag1 DATA
tag20 DATA
tag4 DATA
tag3 DATA
tag10 DATA

Эти данные имеют около 250000 строк.Я хочу отсортировать эти строки в файл по тегу.Строка начинается с tag1 и идет в tag1.txt.Строка начинается с tag2 goto tag2.txt ... и т.д.

Есть ли какой-нибудь умный способ сделать это с помощью цикла?

Ответы [ 2 ]

2 голосов
/ 15 января 2011
import collections

file_data = collections.defaultdict(list)

with open("you_file") as f
    for line in file:
        tag, data  = line.split('\t', 1)
        file_data[tag].append(data) 

for file_name, data in file_data.items():
    with open(file_name, 'w') as f:
         f.write("\n".join(data))
1 голос
/ 15 января 2011

Это заняло 5 секунд для входного файла с 200000 строк.

with open("input.txt") as f:
    for line in f:
        tag_fname, tag_data = line.split(' ',1)
        with open(tag_fname, 'a') as g:
            g.write(tag_data)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...