使用 logging 时,Python 的 print()/sys.stdout.write() 不可见

5

我在程序中广泛使用日志记录。但现在我想在不使用日志模块的情况下写入标准输出,但输出并没有显示出来。

也不是:

sys.stdout.write( "BOE!" )

Nor

print( "WAH!" )

正在工作。有人能为我解释一下吗?


你能否发布一个最小化的测试用例? - Blender
这是一个从控制台运行的应用程序吗?我对Python还很陌生。但是,如果这是一个基于Windows的应用程序,日志将记录在哪里? - shahkalpesh
好的,问题就在这里,在一个最小的示例中它确实可以工作。所以我只是在寻找曾经见过这种情况的人。我认为原因是由于日志记录,因为我自己也曾经见过这种情况,但只发生在使用日志记录模块的应用程序中,并且只在我开始使用日志记录模块之后才出现。 - A.J.Rouvoet
1
这确实不应该是由于日志记录造成的(前提是您使用默认的“logging”模块)。确保您没有在任何地方更改了sys.stdout。 - Johannes P
是的,这是一个控制台应用程序。在Windows中,您需要使用终端仿真器(如Cygwin)来使用它。 - A.J.Rouvoet
只要它在最小的示例中运行正常,那就是我的想法。但我也很确定这不是stdout的问题,因为当我将StreamHandler初始化为stdout时,它实际上是可以工作的! - A.J.Rouvoet
1个回答

6

我应该提到我已经尝试过刷新流。 - A.J.Rouvoet
此外,我尝试使用stderr,如果我没记错的话,它是无缓冲的。 - A.J.Rouvoet
哇,当我测试时出了点问题。它实际上解决了问题。谢谢。 - A.J.Rouvoet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接