擅长:python、mysql、java
<p>对Python中的文件进行“伪就地”更改的最佳方法是使用标准库中的<code>fileinput</code>模块:</p>
<pre><code>import fileinput
processing_foo1s = False
for line in fileinput.input('1.txt', inplace=1):
if line.startswith('foo1'):
processing_foo1s = True
else:
if processing_foo1s:
print 'foo bar'
processing_foo1s = False
print line,
</code></pre>
<p>如果希望保留旧版本,也可以指定备份扩展,但这与代码的工作方式相同--使用<code>.bak</code>作为备份扩展,但在更改成功完成后也会将其删除。</p>
<p>除了使用正确的标准库模块外,这段代码还使用了更简单的逻辑:要在每次以<code>foo1</code>开头的行运行之后插入<code>"foo bar"</code>行,您只需要一个布尔值(我是否在这样的运行中?)所讨论的bool可以无条件地设置,仅仅基于当前行是否以这种方式开始。如果您想要的精确逻辑与此逻辑(这是我从您的代码中推断出来的)略有不同,那么相应地调整此代码应该不难。</p>