我在重定向python应用程序的输出时遇到了这个奇怪的问题。我正在运行bitmessage from source,它会向控制台输出相当多的东西。
我尝试使用我编写的应用程序过滤掉一些行。当我将输出重定向到文件python.exe src\bitmessagemain.py>file.txt
时,它工作正常,一切都发送到文本文件。当我将输出传输到另一个应用程序python.exe src\bitmessagemain.py | someapp.exe
时,所有“print”语句似乎都被忽略了。它们不会重定向,也不会通过管道传输到其他应用程序。
使用“more”和“type CON”等系统内部命令时,重定向甚至不起作用
有人知道如何解决这个问题吗?
答案 0 :(得分:6)
所以我通过实验找到答案。似乎提供命令行开关-u
通过将输出设置为无缓冲二进制模式来解决问题。文档:cmd option -u
我不知道任何副作用,但似乎完全有效。
由于某种原因,输出缓冲区远大于可见控制台区域的大小。我在无限循环中打印文本,当我打印大约半GB(!)时,输出被刷新。这只能在使用重定向时完成。可能是尝试优化性能。