擅长:python、mysql、java
<p>拼图不错。为什么线是反向的?由于<strong>输出缓冲:</strong></p>
<p>写入文件时,系统不会立即将数据提交到磁盘。这种情况会定期发生(当缓冲区已满时),或者当文件关闭时。您从不关闭<code>f</code>,因此当<code>f</code>超出范围时,它将为您关闭。。。当函数<code>editor()</code>返回时会发生这种情况。但是<strong><code>editor()</code>递归地调用自己!</strong>所以对<code>editor()</code>的第一个调用是最后一个退出的调用,它的输出是最后一个提交到磁盘的调用。整洁,嗯?你知道吗</p>
<p>要解决此问题,只要在完成以下操作后立即关闭<code>f</code>:</p>
<pre><code>f = open(usrtxtdir,"a")
f.write(words + '\n')
f.close() # don't forget the parentheses
</code></pre>
<p>或同等产品:</p>
<pre><code>with open(usrtxtdir, "a") as f:
f.write(words + '\n')
</code></pre>
<p>但最好确定你的项目组织:</p>
<ol>
<li>使用循环来运行<code>editor()</code>,而不是递归调用。你知道吗</li>
<li>编辑器应该在会话结束时写出文件,而不是每行都输入。考虑在一个行列表中收集用户输入,并在最后一次性地写出所有内容。你知道吗</li>
<li>如果确实要边写边写,应该只打开一次文件,反复写,然后在完成后关闭它。你知道吗</li>
</ol>