Python:为什么print语句和subprocess.call()输出不同步?
问题描述:
我运行下面的一段代码(称之为batch.py)Python:为什么print语句和subprocess.call()输出不同步?
for config in keystoneConfig:
cmdlist = generate_cmd_list(config)
print ' '.join(cmdlist)
subprocess.call(cmdlist)
而且batch.py的输出重定向到另一个文件。即
./batch.py> output.txt的
但我意识到,从subprocess.call()
输出所有print
语句之前去。为什么输出不同步?
答
由于您将其输出重定向到文件而不是控制台,因此Python会阻止其自己的输出,并且不会在subprocess.call()
之前对其进行刷新,您需要强制行缓冲或禁用缓冲,或在子流程调用之前手动刷新。
如何“刷新”打印语句? – CodeNoob 2012-04-20 21:25:00
'sys.stdout.flush()' – Fenikso 2012-04-20 21:26:10