sys.stderr多久刷新一次缓冲区,这是不同环境中的标准?
>>> import sys
>>> sys.__stderr__
<open file '<stderr>', mode 'w' at 0x2b4fcb7ac270>
我发现它只是一种标准的文件类型,但我不知道它应该是buffering的价值。 dir()
似乎也不会产生任何有用的信息。
答案 0 :(得分:3)
在Python 2上,我无法找到文档中sys.stderr
指定缓冲的位置。我期望与stderr
in C that is unbuffered (except Windows)具有相同的行为,我不知道c99标准是否要求它。 POSIX中的The standard error stream is not fully buffered。 Python 2中的-u
option forces standard streams to be unbuffered。
交互式时,标准流是行缓冲的。否则,他们 像常规文本文件一样是块缓冲的。你可以覆盖它 使用
-u
命令行选项的值。
强制stdout和stderr流的二进制层(即 作为
buffer
属性可用)无缓冲。文本I / O. 如果写入控制台,则图层仍将是行缓冲的,或者 如果重定向到非交互式文件,则阻止缓冲。