Python os.system:命令顺序

时间:2017-12-12 20:51:08

标签: python python-3.x git-bash python-os

为什么要使用内容

调用文件a.py
import os
print('Hi')
os.system('cat a.py')

产生以下输出,如何让它们以正确的顺序打印?

$ python a.py
import os
print('Hi')
os.system('cat a.py')
Hi

您会看到cat命令在print之前打印到stdout。在Windows 10上的GitBash中运行Python 3.6时会发生。在Ubuntu 17.10上使用Python 3.6会发生

注意:我知道我可以轻松地使用类似file.readlines()的内容打印文件内容。这只是一个简单的例子。但是,当运行更复杂的东西时,了解为什么会发生这种情况以及如何解决这个问题变得很重要

2 个答案:

答案 0 :(得分:9)

输出被缓冲。你必须刷新这个缓冲区:

import os
import sys
print('Hi')
sys.stdout.flush()
os.system('cat a.py')

答案 1 :(得分:0)

这是一种更干净的方式。

from subprocess import check_output  
print check_output(['cat', 'a.py'])