擅长:python、mysql、java
<p>当您在没有参数的情况下调用<code>file.truncate()</code>时,它是<a href="https://docs.python.org/3/library/io.html#io.IOBase.truncate" rel="nofollow noreferrer">truncates the file at the current location</a>(文件的结尾)。然后,当您调用<code>file.seek(0)</code>时,它移动到文件的开头,并开始在旧数据之上写入新数据。如果新内容比旧内容短(例如,将“test”字符串替换为“tes”),则一些旧内容将在末尾保留。以下是几种解决方案:</p>
<ul>
<li>将当前<code>file.truncate()</code>更改为<code>file.truncate(0)</code></li>
<li>在写入文件之前使用<code>file.seek(0)</code>,然后在将数据写入文件之后或之后立即使用<code>file.truncate()</code></li>
<li>使用<code>open(filename, 'r')</code>块读取文件,然后使用单独的<code>open(filename, 'w')</code>块回写文件(自动替换完整内容)</li>
</ul>