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

Ven*_*tta 4 python linux subprocess

我正在运行以下代码(称之为batch.py​​)

for config in keystoneConfig: 
    cmdlist = generate_cmd_list(config)
    print ' '.join(cmdlist)
    subprocess.call(cmdlist)
Run Code Online (Sandbox Code Playgroud)

并将batch.py​​的输出重定向到另一个文件.即

./batch.py​​> output.txt

但我意识到所有输出都来自声明subprocess.call()之前print.为什么输出不同步?

gee*_*aur 10

Python是块缓冲它自己的输出而不是之前刷新它subprocess.call(),因为你将它的输出重定向到文件而不是控制台; 你需要强制行缓冲或禁用缓冲,或者在子进程调用之前手动刷新.

  • `sys.stdout.flush()` (5认同)