"print" 重定向到另一个应用程序时不工作

"print" not working when redirecting to another application

我 运行 在重定向 python 应用程序的输出时遇到了这个 st运行ge 问题。我是 运行 位消息 from source,它向控制台打印了大量内容。

我尝试用我编写的应用程序过滤掉一些行。当我将输出重定向到文件 python.exe src\bitmessagemain.py>file.txt 时,它工作正常,所有内容都发送到文本文件。当我将输出通过管道传输到另一个应用程序 python.exe src\bitmessagemain.py | someapp.exe 时,所有 "print" 语句似乎都被忽略了。它们不会被重定向,也不会通过管道传输到其他应用程序。

重定向甚至在使用 "more" 和 "type CON"

等系统内部命令时也不起作用

有人知道如何解决这个问题吗?

所以我通过实验找到了答案。似乎提供命令行开关 -u 可以通过将输出设置为无缓冲二进制模式来解决问题。文档:cmd option -u

我不知道有什么副作用,但它似乎完全有效。

出于某种原因,输出缓冲区远远大于可见控制台区域的大小。我在无限循环中打印文本,当我打印大约半 GB(!)时,输出被刷新了。这仅在使用重定向时完成。可能是为了优化性能。