逐行实时同时读取 stdout 和 stderr

时间:2021-06-18 17:09:49

标签: python

我需要在 Python 中运行一个 shell 命令,并简单地将其输出打印回屏幕,而无需实时更改写入 stdout 和 stderr 的内容。

我可以看到类似的问题 have been asked before 但我找不到简单的答案。

我尝试过类似的事情

import subprocess, sys
  
command = "some long shell command".split(" ")

proc = subprocess.Popen(
    command,
    stdout=subprocess.PIPE, 
    stderr=subprocess.PIPE
)

while True:
    out = proc.stdout.read(1)

    if out:
        sys.stdout.write(str(out))
        sys.stdout.flush()

    err = proc.stderr.read(1)

    if err:
        sys.stderr.write(str(err))
        sys.stderr.flush()

    if proc.poll():
        break

这行不通,但它可能有助于理解我想要做什么。

0 个答案:

没有答案
相关问题