如何在标准输出(Windows cmd)的同一通道中打印迭代的字符串?

时间:2019-06-04 13:00:44

标签: python terminal

我正在使用以下代码来显示具有循环完成百分比的字符串:

for x in range(y,z):
    completed = 100*(x-y)/(z-y)
    sys.stdout.write(f'{completed:10.0f}% completed.'
    sys.stdout.flush()

我希望所有字符串都显示在Windows cmd的同一行中(删除早期值,并在同一位置打印新值)

我想要获得的输出应如下所示:

    x% completed.

每次迭代都会更新x值。

但是我得到的输出看起来像这样:

    0% completed.         1% completed.         2% completed. ...etc

根据我的发现,它应该可以在Windows以外的其他平台上运行,但是我对Windows解决方案感兴趣。

1 个答案:

答案 0 :(得分:0)

在字符串末尾添加\r

for x in range(y,z):
    completed = 100*(x-y)/(z-y)
    sys.stdout.write(f'{completed:10.0f}% completed.  \r'
    sys.stdout.flush()

除非存在一些缓冲问题,否则您应该可以直接使用print

for x in range(y,z):
    completed = 100*(x-y)/(z-y)
    print(f'{completed:10.0f}% completed.  ', end='\r')