我写了一个小菜一碟,显示它在 OSX 和 Linux shell 上按预期工作的进度。今天我在 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()
以上代码来自where I am contributing here
它在 OSX 上就像魅力一样:
但是如果每个进度都转储到下一行,则保留上一行。
如何在 Windows 上实现 stdout.flush()
的功能?
最佳答案
您尝试过使用“\r”吗?如果只有一行发生变化,它可能是您的解决方案。
它的工作原理如下:
>>> print("Hello\rP")
<<< Pello
关于python - stdout 不会在 Windows 命令提示符上刷新,但可以在 OSX 和 Linux 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25340462/