редактирование большого текста, вставьте заменить - PullRequest
0 голосов
/ 25 мая 2018

У меня большой текстовый файл с более чем 200 миллионами строк.Он разбит на блоки примерно по 50000 строк.Что мне нужно сделать, это заменить строки 10-100 из всех блоков на строки 10-100 из первого блока.Есть идеи, как это сделать?

Заранее спасибо

1 Ответ

0 голосов
/ 25 мая 2018

Используйте list.Сначала прочитайте строки, которые вы хотите использовать, из первого блока в список.Затем прочитайте каждый файл по очереди построчно и запишите их в новый файл, но если номер строки находится в диапазоне от 1 до 100, используйте строку из вашего списка.Пример, который достигает вашей цели:

fnames = ["file1.txt", "file2.txt", "file3.txt"]

sub_list_start = 9
sub_list_end = 100

file1_line_10_to_100 = []

with open(fnames[0]) as f:
    for i, line in enumerate(f.readlines()):
        if i >= sub_list_start and i < sub_list_end:
            file1_line_10_to_100.append(line)
        if i >= sub_list_end:
            break

for fname in fnames[1:]:
    with open(fname) as f:
        with open(fname + '.new', 'w') as f_out:
            for i, line in enumerate(f.readlines()):
                if i >= sub_list_start and i < sub_list_end:
                    f_out.write(file1_line_10_to_100[i - sub_list_start])
                else:
                    f_out.write(line)
...