繁体   English   中英

Python:为什么打印语句和 subprocess.call() 输出不同步?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM