Python stdout不会在Windows命令提示符下刷新,但可以在OSX和Linux上运行

Python stdout不会在Windows命令提示符下刷新,但可以在OSX和Linux上运行,python,linux,macos,cmd,Python,Linux,Macos,Cmd,我已经写了一个小菜一碟,展示了它在OSX和LinuxShell上的预期工作进度。今天我在Windows上测试,它没有刷新shell中最后转储的文本 done = int(50 * progress / int(file_size)) percentDone = int(progress) * 100. / file_size speed = sizeof(progress//(clock() - start)) bar = '=' * done die = ' ' * (50-done) std

我已经写了一个小菜一碟,展示了它在OSX和LinuxShell上的预期工作进度。今天我在Windows上测试,它没有刷新shell中最后转储的文本

done = int(50 * progress / int(file_size))
percentDone = int(progress) * 100. / file_size
speed = sizeof(progress//(clock() - start))
bar = '=' * done
die = ' ' * (50-done)
stdout.write("\r[%s%s][%3.2f%%] %s of %s at %s/s   " % (bar, die, percentDone, sizeof(progress), sizeof(file_size), speed))
stdout.flush()
以上代码来自

它就像OSX上的魅力:

但是,如果每一个进度都被转储到下一行,则保留上一行


如何在Windows上实现stdout.flush的功能?

您是否尝试过使用\r\n?如果只有一行发生了变化,那就是你的解决方案。 它的工作原理如下:

>>> print("Hello\rP")
<<< Pello

测试中没有赢家,但请尝试使用“b”backtab,通常为4个字符;可能win console会将“返回车”解释为“返回车”。就是这样,我这样使用它,它起了作用:`\r[%s%s][%3.2f%%]%s在%s/s处\r\n`