【问题标题】:How to print iterated strings in same lane of stdout (Windows cmd)?如何在标准输出(Windows cmd)的同一通道中打印迭代字符串?
【发布时间】:2019-10-20 00:25:49
【问题描述】:

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

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 解决方案很感兴趣。

【问题讨论】:

标签: python terminal


【解决方案1】:

在字符串末尾添加\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')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 2019-09-15
    • 2021-09-14
    相关资源
    最近更新 更多