[英]Python: why print statements and subprocess.call() output are out of sync?
我正在运行以下代码(称为batch.py)
for config in keystoneConfig:
cmdlist = generate_cmd_list(config)
print ' '.join(cmdlist)
subprocess.call(cmdlist)
并将 batch.py 的输出重定向到另一个文件。 IE
./batch.py > 输出.txt
但我意识到subprocess.call()
所有输出都在print
语句之前。 为什么输出不同步?
Python 正在块缓冲它自己的输出,而不是在subprocess.call()
之前刷新它,因为您将其输出重定向到文件而不是控制台; 您需要强制行缓冲或禁用缓冲,或在子进程调用之前手动刷新。
在打印之后和进行子进程调用之前使用sys.stdout.flush()
进行刷新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.