小编典典

Python脚本在打印之前打印os.system的输出

linux

我有一个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语句之前打印?


阅读 1385

收藏
2020-06-07

共1个答案

小编典典

当您输出到管道时,Python缓冲写入的sys.stdout输出,并在刷新,溢出,关闭后(程序退出时)输出。虽然它将缓冲打印调用,但系统调用输出将直接输出到stdout中,并且其输出将不会被缓冲。这就是为什么您会看到这样的优先级。为了避免这种情况,请使用python -u

python -u test.py > test.out; cat test.out

编辑 :有关何时将刷新缓冲区的说明。

2020-06-07