微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

我有一个python脚本test.py:

print "first" import os os.system("echo second")

在Linux命令行我执行

python test.py

它返回:

first second

然后我执行

将命令输出保存到variables

将存档解压缩到现有的目录结构

什么是Windows命令行参数编码?

如何用tar压缩目录时排除大文件

使用文件名称和序列号批量重命名文件 – 发送到菜单

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

哪个返回

second first

如何redirect输出使得os.system调用在打印语句之前打印?

Linux的行为在Windowsshell – 运行ruby没有“ruby”追加到命令?

Windows环境variables中的控制台宽度

C#程序将不会从Java执行

Windows命令行pipe道一个stringgroovy

我如何grep整个,可能包装,代码行?

当你输出到管道时,Python缓冲你的输出写入到sys.stdout ,并在flush之后或溢出之后,或者在关闭之后(程序退出时)输出。 虽然它会缓冲打印调用,系统调用直接输出到标准输出,它们的输出不会被缓冲。 这就是为什么你看到这样的优先顺序。 为了避免这种情况,请使用python -u :

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

在这里看到更多信息。

编辑 :解释什么时候缓冲区将被刷新。

另一种防止os缓冲的方法是在第一次打印之后刷新输出

#!/usr/bin/env python import sys print "first" sys.stdout.flush() import os os.system("echo second")

当python脚本的输出一个tty时,它的输出是行缓冲的。 当输出是常规文件时,输出是块缓冲。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐