2014-12-23 3 views
1

Предположим, у меня есть очень большой файл, и я хочу вставить «Hello» в 10000-ю строку. Как я могу сделать это без буферизации всего файла с помощью python?python вставить строку в определенную строку (большой файл)

Мне нужно будет вставлять строку в этот большой файл очень часто, и буферизация всего файла значительно увеличит время работы и использование памяти. Есть ли простой способ вставить в определенную строку (номер строки указан)?

+0

, насколько большой это очень большой файл? 10 тыс. Строк не так много – jfs

ответ

1

Если вы открыты для записи на другой файл, и уничтожение старого, это должно работать:

import itertools 
import os 

def writeLine(infilepath, N, newline): 
    outfilepath = infilepath + '.tmp' 
    with open(infilepath) as infile, open(outfilepath, 'w') as outfile: 
     for line in itertools.islice(infile, 0, N-1): 
      outfile.write(line) 
     outfile.write(newline + '\n') 
     for line in infile: 
      outfile.write(line) 
    os.remove(infilepath) 
    os.rename(outfilepath, outfilepath[:-4])