重定向到另一个应用程序时"打印"不起作用

Ayr*_*yrA -1 python windows printing redirect stdout

我在重定向python应用程序的输出时遇到了这个奇怪的问题.我从源代码运行bitmessage ,它向控制台打印了相当多的东西.

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

使用"more"和"type CON"等系统内部命令时,重定向甚至不起作用

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

Ayr*_*yrA 6

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

我不知道任何副作用,但似乎完全有效.

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