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

我有一个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

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

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

以上是 Python脚本在打印之前打印os.system的输出 的全部内容, 来源链接: utcz.com/qa/432317.html

回到顶部