擅长:python、mysql、java
<p><code>sys.stdout.write</code>是一个好的开始,但是您还需要传递一个“回车”<code>'\r'</code>以跳到行的开头。这将在下次调用时覆盖旧字符:</p>
<pre><code>for i in range(10):
sys.stdout.write(str(i)+'\r')
time.sleep(1)
</code></pre>
<p>如果新行比前一行短,您仍将看到前一行的附加字符。作为修复,您可以添加一些额外的空格来覆盖它们</p>
<p><code>sys.stdout.write</code>和<code>print</code>之间的主要区别在于<code>print</code>将自动附加换行符(<code>\n</code>)。这就是为什么您会看到下一行前面的<code>sys.stdout.write</code></p>
<p>在交互式Python会话中运行它会产生一些奇怪的副作用,但是如果在Python脚本中使用它,这是很好的。另外,确保中间没有任何其他<code>print()</code>命令。这只适用于当前的<em>行,任何<code>'\n'</code>都会创建一个新行</p>
<pre><code>sys.stdout.write('virus_prevention.fix.virus.|attempt_enter\r')
time.sleep(2)
sys.stdout.write('virus_prevention.fix.virus|.attempt_enter\r')
print() # create a linebreak at the end
</code></pre>