擅长:python、mysql、java
<p><code>print</code>将输出到STDOUT,<code>traceback.print_exc()</code>将输出到STDERR。STDOUT是“缓冲”的,STDERR不是。从<a href="https://eulertech.wordpress.com/2017/10/30/sys-out-flush-in-python/" rel="nofollow noreferrer">this article</a>:</p>
<blockquote>
<p>By default, I/O in programs is buffered which means the IO is not served immediately byte by byte rather are served from a temporary storage to the requesting program... By buffering, the whole block is read into the buffer at once then the individual bytes are delivered to you from the (fast in-memory) buffer area.</p>
</blockquote>
<p>当缓冲区被“刷新”时,它将被显示。通常,如果输出是一个终端,则在新行刷新缓冲区。你知道吗</p>
<p>在Python3中,可以使用<code>flush</code>kwarg强制执行此操作:</p>
<pre class="lang-py prettyprint-override"><code>print(url, end='', flush=True)
</code></pre>
<p>实际上与:</p>
<pre class="lang-py prettyprint-override"><code>import sys
# ...
print(url, end='')
sys.stdout.flush()
</code></pre>
<p>或者,您可以删除<code>end</code>kwarg:</p>
<pre class="lang-py prettyprint-override"><code>print(url)
</code></pre>
<p>请注意,这将在URL后面打印一个换行符。这可能是不可取的。你知道吗</p>