擅长:python、mysql、java
<pre><code>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)
</code></pre>
<p>这将在文件中每次出现<code>xxxxx\n</code>和<code>yyyyy\n</code>之间插入一行。</p>
<p>另一种方法是编写一个函数来产生行,直到它看到<code>xxxxx\nyyyyy\n</code></p>
<pre><code> 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
</code></pre>
<p>然后您可以使用这个直接传递给<code>writelines</code>:</p>
<pre><code>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)
</code></pre>