Простым способом добавления данных в середине файла является использование модуля fileinput
:
import fileinput
for line in fileinput.input(r'C:\Sanity_Automation\....tcl', inplace=1):
print line, # preserve old content
if x in line:
print data # insert new data
Из fileinput
docs :
Необязательная фильтрация в месте: если аргумент ключевого слова inplace = 1 передан в fileinput.input () или в конструктор FileInput, файл перемещается в файл резервной копии и стандартный вывод направляется на входной файл (если файл с тем же именем, что и файл резервной копии уже существует, он будет заменен молча). Это позволяет написать фильтр, который переписывает свой входной файл на место. Если задан параметр резервного копирования (обычно как backup = '.'), Он указывает расширение для файла резервной копии, и файл резервной копии остается вокруг;
blockquote>Для вставки данных в файл
filename
при чтении без использованияfileinput
:import os from tempfile import NamedTemporaryFile dirpath = os.path.dirname(filename) with open(filename) as file, \ NamedTemporaryFile("w", dir=dirpath, delete=False) as outfile: for line in file: print >>outfile, line, # copy old content if x in line: print >>outfile, data # insert new data os.remove(filename) # rename() doesn't overwrite on Windows os.rename(outfile.name, filename)