Python os.system:命令顺序

Mic*_* H. 3 python python-3.x git-bash python-os

为什么a.py用内容调用文件

import os
print('Hi')
os.system('cat a.py')
Run Code Online (Sandbox Code Playgroud)

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

$ python a.py
import os
print('Hi')
os.system('cat a.py')
Hi
Run Code Online (Sandbox Code Playgroud)

你看到cat命令打印到stdout之前print.在Windows 10上的GitBash中运行Python 3.6时会发生.在Ubuntu 17.10上,Python 3.6 不会发生这种情况.


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

Dan*_*iel 9

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

import os
import sys
print('Hi')
sys.stdout.flush()
os.system('cat a.py')
Run Code Online (Sandbox Code Playgroud)