Я хочу заменить строку в моем файле новой строкой (на самом деле мне нужно вставить некоторое содержимое в строку). Фактически строка содержит AC_CONFIG_FILES ([]) Мне нужно заменить эту строку новой строкой, добавив некоторые аргументы makefile на основе некоторого списка. Затем я построил новую строку и сделал замену в файле. Есть ли эффективный способ сделать это?Замена строки в файле с помощью Python
# 'subdirs' is the list which contains makefile arguments
rstring = "AC_CONFIG_FILES([Makefile"
for t in subdirs:
rstring = rstring+' src/'+t+'/Makefile'
rstring += '])'
print rstring
# 'fname' is the file in which replacement have to be done
# i is used for indexing in 'insert' function
# 'rline' is the modified line
fname = 'configure.ac'
i = 0
with open(fname,'r') as f:
modlines=[]
for line in f.readlines():
if 'AC_CONFIG_FILES' in line:
modlines.insert(i,rstring+'\n')
i = i+1
continue
modlines.insert(i,line)
i = i+1
with open(fname,'w') as out:
for i in range(len(modlines)):
out.write(modlines[i])
Side Примечание: код форматирования было бы полезно улучшить: Я полагаю, что вы читали и применять PEP 8. Кроме того, будьте осторожны, чтобы не писать в Python, как и в C: код Python проще, чем код в этом вопросе; например, вам часто не нужны индексы (см. ответ Йоханнеса Чарры). – EOL