Как написать конкретную строку в файле в Python?

У меня есть файл как формат:

xxxxx yyyyy zzzzz ttttt 

И мне нужно написать в файле между xxxxx и yyyyy строками как:

 xxxxx my_line yyyyyy zzzzz ttttt 

2 Solutions collect form web for “Как написать конкретную строку в файле в Python?”

 with open('input') as fin, open('output','w') as fout: for line in fin: fout.write(line) if line == 'xxxxx\n': next_line = next(fin) if next_line == 'yyyyy\n': fout.write('my_line\n') fout.write(next_line) 

Это вставляет вашу строку между каждым вхождением xxxxx\n и yyyyy\n в файл.

Альтернативным подходом было бы написать функцию для xxxxx\nyyyyy\n строк, пока не увидит xxxxx\nyyyyy\n

  def getlines(fobj,line1,line2): for line in iter(fobj.readline,''): #This is necessary to get `fobj.tell` to work yield line if line == line1: pos = fobj.tell() next_line = next(fobj): fobj.seek(pos) if next_line == line2: return 

Затем вы можете использовать это, переданное непосредственно в writelines :

 with open('input') as fin, open('output','w') as fout: fout.writelines(getlines(fin,'xxxxx\n','yyyyy\n')) fout.write('my_line\n') fout.writelines(fin) 

Если файл невелик, вы можете просто использовать str.replace() :

 >>> !cat abc.txt xxxxx yyyyy zzzzz ttttt >>> with open("abc.txt") as f,open("out.txt",'w') as o: data=f.read() data=data.replace("xxxxx\nyyyyy","xxxxx\nyourline\nyyyyy") o.write(data) ....: >>> !cat out.txt xxxxx yourline yyyyy zzzzz ttttt 

Для огромного файла используйте подход Мимилсона.

  • Обнаружение ямбды Python
  • Нет Ошибка / ошибка Python?
  • Проблема, издевающаяся над оформленным вызовом метода в Python 2.7
  • Проблема с реализацией Python цепочки присваивания
  • Как решить ошибку импорта для панд?
  • Издевательство над функцией для исключения исключения для проверки исключающего блока
  • zsh: найдено совпадений: запросы
  • Как открыть html-файл?
  • Python - лучший язык программирования в мире.