擅长:python、mysql、java
<p>几乎可以肯定的是,由于以下三个原因之一,您会出现此问题:</p>
<ol>
<li>没有终端</li>
<li>使用某个IDE提供的“虚拟终端”,该IDE没有将<code>sys.stdout</code>连接到真正的文件描述符,并且无法对<code>os.get_terminal_size</code>进行修补</li>
<li>当查询<code>stdout</code>的终端大小时,可能在一个奇怪的系统上,即使它连接到一个终端,也不起作用</li>
</ol>
<p>无论哪种方式,解决方案都是相同的:Follow<a href="https://docs.python.org/3/library/os.html#os.get_terminal_size" rel="nofollow noreferrer">the guidance from the docs</a>(“<code>shutil.get_terminal_size()</code>是通常应该使用的高级函数,<code>os.get_terminal_size</code>是低级实现。”),和<a href="https://docs.python.org/3/library/shutil.html#shutil.get_terminal_size" rel="nofollow noreferrer">use ^{<cd4>}</a>,总是提供结果,按顺序检查:</p>
<ol>
<li><code>COLUMNS</code>/<code>LINES</code>的环境设置</li>
<li>如果未定义它们,它将尝试使用<code>os.get_terminal_size()</code></li>
<li>如果失败(无论是系统不支持查询,还是未连接到终端),它都会提供一个回退结果,默认为<code>(80, 24)</code>(如果对您来说这不是一个好的默认值,您可以传递自己的<code>tuple</code>,例如<code>cols, lines = shutil.get_terminal_size((128, 32))</code>回退到一个更大的默认维度)</li>
</ol>