Python 为什么stderr打印比stdout晚?
Python 为什么stderr打印比stdout晚?,python,stdout,stderr,Python,Stdout,Stderr,stderr没有缓冲区,stdout有缓冲区。 stderr不晚于stdout 我试过: 导入系统 sys.stdout.write(“stdout1”) sys.stderr.write(“stderr1”) sys.stdout.write(“stdout2”) sys.stderr.write(“stderr2”) 运行python test.py 结果: stderr1 stderr2 stdout1 stdout2 stdout1 stderr1 stdout2 stderr2
stderr
没有缓冲区,stdout
有缓冲区。
stderr
不晚于stdout
我试过:
导入系统
sys.stdout.write(“stdout1”)
sys.stderr.write(“stderr1”)
sys.stdout.write(“stdout2”)
sys.stderr.write(“stderr2”)
运行python test.py
结果:
stderr1 stderr2 stdout1 stdout2
stdout1 stderr1 stdout2 stderr2
stdout1
stderr1
stdout2
stderr2
它按预期工作
导入系统 sys.stdout.write(“stdout1”) sys.stderr.write(“stderr1”) sys.stdout.write(“stdout2”) sys.stderr.write(“stderr2”) 运行
python-u test.py
结果:
stderr1 stderr2 stdout1 stdout2
stdout1 stderr1 stdout2 stderr2
stdout1
stderr1
stdout2
stderr2
它按预期工作
导入系统 sys.stdout.write(“stdout1\n”) sys.stderr.write(“stderr1\n”) sys.stdout.write(“stdout2\n”) sys.stderr.write(“stderr2\n”) 运行
python test.py
结果:
stderr1 stderr2 stdout1 stdout2
stdout1 stderr1 stdout2 stderr2
stdout1
stderr1
stdout2
stderr2
它按预期工作
导入系统 sys.stdout.write(“stdout1”) sys.stderr.write(“stderr1”) sys.stdout.write(“stdout2”) sys.stderr.write(“stderr2”) 打印() string=“” 对于范围(10)内的i: string=string+str(i)+“\n” 打印(字符串) 实际结果:
stdout1 stdout2
0
1
2
3
4
5
6
7
8
9
stderr1 stderr2
我认为应该是:
stderr1 stderr2 stdout1 stdout2
0
1
2
3
4
5
6
7
8
9
在Python3.x中,stderr是行缓冲区
在Python2.x中,stderr是无缓冲的
如果运行
python test.py-u
?是。我已经解决了这个问题,谢谢你的帮助。然而,我很烦恼。你有空帮我吗?