为什么当我写入 stderr 时,我在 stdout 上看到 STDERR 输出?
Why when I write to stderr I see STDERR output on the stdout?
import sys
if __name__ == '__main__':
sys.stdout.write("STDOUT\n")
sys.stderr.write("STDERR\n")
您能解释一下为什么当我写入 stderr 时我在 stdout 上看到 STDERR 输出吗?我认为只有 STDOUT 应该在终端中可见。
$ python stdout_stdin.py
STDOUT
STDERR
I supposed only STDOUT should be visible in the terminal.
不正确。 stderr 是一个单独的文件描述符,但默认情况下它仍然连接到与 stdout 相同的 tty。
默认情况下,stdout 和 stderr 流都与您的显示设备相连,这就是为什么您也在屏幕上看到 syserr 消息的原因。
通常在终端显示stdout
和stderr
。如果您的 OS 支持它,您可以将一个或两个重定向到其他地方。例如,您可以重定向 stdout
,您只会在终端中看到 stderr
(或者您可以重定向 stderr
,您只会在终端中看到 stdout
)。
import sys
if __name__ == '__main__':
sys.stdout.write("STDOUT\n")
sys.stderr.write("STDERR\n")
您能解释一下为什么当我写入 stderr 时我在 stdout 上看到 STDERR 输出吗?我认为只有 STDOUT 应该在终端中可见。
$ python stdout_stdin.py
STDOUT
STDERR
I supposed only STDOUT should be visible in the terminal.
不正确。 stderr 是一个单独的文件描述符,但默认情况下它仍然连接到与 stdout 相同的 tty。
默认情况下,stdout 和 stderr 流都与您的显示设备相连,这就是为什么您也在屏幕上看到 syserr 消息的原因。
通常在终端显示stdout
和stderr
。如果您的 OS 支持它,您可以将一个或两个重定向到其他地方。例如,您可以重定向 stdout
,您只会在终端中看到 stderr
(或者您可以重定向 stderr
,您只会在终端中看到 stdout
)。