Python stdout,\r 进度条与 Putty 的 sshd 不定期更新
我有一个非常简单的进度“条”,用的代码大概是这样的:
import sys
from time import sleep
current = 0
limit = 50
while current <= limit:
sys.stdout.write('\rSynced %s/%s orders' % (current, limit))
current_order += 1
sleep(1)
这个在大多数情况下都能正常工作,但在用Putty通过ssh连接时就不行了。Putty每3分钟才更新一次,或者只有在一行以\n结尾时才会更新。这是Putty的设置问题,还是ssh的配置问题,或者我可以通过代码来解决这个问题呢?
3 个回答
0
可以使用 sys.stderr.write
,因为它不像 sys.stdout
那样有缓冲区。这样做可以把进度指示和(可能是)有用的处理输出分开。
1
你可以使用 flush()
来强制更新。
sys.stdout.write('\r[%s%s]' % ('=' * completed, ' ' * (total-completed)))
sys.stdout.flush()
3
试着在调用 sys.stdout.write
之后加上 sys.stdout.flush()
。