我正在运行以下代码(称之为batch.py)
for config in keystoneConfig:
cmdlist = generate_cmd_list(config)
print ' '.join(cmdlist)
subprocess.call(cmdlist)
将batch.py的输出重定向到另一个文件。即
./ batch.py> output.txt的
但我意识到subprocess.call()
的所有输出都在print
语句之前。为什么输出不同步?
答案 0 :(得分:10)
Python是块缓冲自己的输出而不是在subprocess.call()
之前刷新它,因为你将其输出重定向到文件而不是控制台;你需要强制行缓冲或禁用缓冲,或者在子进程调用之前手动刷新。
答案 1 :(得分:2)
在打印之后和进行子进程调用之前用 sys.stdout.flush()
刷新。