【发布时间】:2019-01-15 07:21:06
【问题描述】:
stderr 没有缓冲区,stdout 有缓冲区。
stderr 没有理由迟于stdout
我试过了:
import sys
sys.stdout.write("stdout1 ")
sys.stderr.write("stderr1 ")
sys.stdout.write("stdout2 ")
sys.stderr.write("stderr2 ")
运行python test.py
结果:
stderr1 stderr2 stdout1 stdout2
它按预期工作。
import sys
sys.stdout.write("stdout1 ")
sys.stderr.write("stderr1 ")
sys.stdout.write("stdout2 ")
sys.stderr.write("stderr2 ")
运行python -u test.py
结果:
stdout1 stderr1 stdout2 stderr2
它按预期工作。
import sys
sys.stdout.write("stdout1\n")
sys.stderr.write("stderr1\n")
sys.stdout.write("stdout2\n")
sys.stderr.write("stderr2\n")
运行python test.py
结果:
stdout1
stderr1
stdout2
stderr2
它按预期工作。
import sys
sys.stdout.write("stdout1 ")
sys.stderr.write("stderr1 ")
sys.stdout.write("stdout2 ")
sys.stderr.write("stderr2 ")
print()
string = ""
for i in range(10):
string = string + str(i) + "\n"
print(string)
实际结果:
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
【问题讨论】:
-
如果你运行
python test.py -u? -
是的。我已经解决了这个问题,感谢您的帮助。然而,Another problem 困扰着我。你有空来帮我吗?