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

标签 python linux macos cmd

我写了一个小菜一碟,显示它在 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 上就像魅力一样: enter image description here

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

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

最佳答案

您尝试过使用“\r”吗?如果只有一行发生变化,它可能是您的解决方案。
它的工作原理如下:

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

关于python - stdout 不会在 Windows 命令提示符上刷新,但可以在 OSX 和 Linux 上运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25340462/

相关文章:

python - 使用 Python 将 "Date Taken"Exif/XMP 信息添加到 TIF 文件

python - 如果找不到属性,如何使 XPath 在 Python 中返回 'None'?

php - curl 无法下载 Composer 安装程序,提示 8888 端口

cocoa - 更改应用程序中的 Cocoa 显示名称?

macos - 执行 wine != 执行 `which wine`

python - 减去 2 到 10 之间任何基数的两个数

python - Python 的 "from <module> import <symbol>"的动态等价物

c - 为什么父进程根本不执行?

linux - 在 Linux 中登录时可以使用 control、shift 或其他特殊组合键作为密码吗?

macOS 定期向事件应用程序发送击键