我有一个python脚本test.py:
print "first" import os os.system("echo second")
在linux命令行上执行
python test.py
返回:
first second
然后执行
python test.py > test.out; cat test.out
哪个返回
second first
如何重定向输出使os.system调用在print语句之前打印?
当您输出到管道时,Python缓冲写入的sys.stdout输出,并在刷新,溢出,关闭后(程序退出时)输出。虽然它将缓冲打印调用,但系统调用输出将直接输出到stdout中,并且其输出将不会被缓冲。这就是为什么您会看到这样的优先级。为了避免这种情况,请使用python -u:
sys.stdout
python -u
python -u test.py > test.out; cat test.out
编辑 :有关何时将刷新缓冲区的说明。