3

为什么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。在 Windows 10 上的 GitBash 中运行 Python 3.6 时发生。在 Ubuntu 17.10 上的 Python 3.6中不会发生。


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

4

2 回答 2

10

输出被缓冲。您必须刷新此缓冲区:

import os
import sys
print('Hi')
sys.stdout.flush()
os.system('cat a.py')
于 2017-12-12T20:54:23.257 回答
0

这是一种更清洁的方式。

from subprocess import check_output  
print check_output(['cat', 'a.py'])
于 2017-12-12T21:03:23.730 回答