【问题标题】:Python: why print statements and subprocess.call() output are out of sync?Python:为什么打印语句和 subprocess.call() 输出不同步?
【发布时间】:2012-05-02 11:31:08
【问题描述】:

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

for config in keystoneConfig: 
    cmdlist = generate_cmd_list(config)
    print ' '.join(cmdlist)
    subprocess.call(cmdlist)

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

./batch.py​​ > 输出.txt

但我意识到subprocess.call() 的所有输出都在print 语句之前。为什么输出不同步?

【问题讨论】:

    标签: python linux subprocess


    【解决方案1】:

    在打印之后和进行子进程调用之前用sys.stdout.flush() 刷新。

    【讨论】:

    • 谢谢。出于某种原因,为print 添加flish=True 不起作用,但这样做了。
    【解决方案2】:

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

    【讨论】:

    • 我如何“刷新”打印语句?
    猜你喜欢
    • 2019-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-25
    • 1970-01-01
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多