重定向到另一个应用程序时“打印”无效

时间:2015-05-29 13:13:25

标签: python windows redirect printing stdout

我在重定向python应用程序的输出时遇到了这个奇怪的问题。我正在运行bitmessage from source,它会向控制台输出相当多的东西。

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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