需要帮助来读出子进程的输出

时间:2018-01-19 08:01:52

标签: python bash subprocess sudo eof

我的python脚本(python 3.4.3)通过子进程调用bash脚本。

OutPST = subprocess.check_output(cmd,shell=True)

它有效,但问题是,我只获得了一半的数据。我调用的子进程调用一个不同的子进程,我猜测,如果“子子进程”发送EOF,我的程序认为,就是它并结束check_output。

有人知道如何获取所有数据吗?

1 个答案:

答案 0 :(得分:1)

你应该使用subprocess.run(),除非你真的需要对通过stdin与处理进行交谈的精细控制(或者在进程运行时做其他事情而不是阻止它完成)。它使捕获输出变得非常容易:

STDOUT

如果你想合并stdout和stderr(就像你没有在你的终端中看到它,如果你没有进行任何重定向),你可以使用特殊目的地stderr进行{{ 1}}:

from subprocess import STDOUT

result = run(cmd, stdout=PIPE, stderr=STDOUT)
print(result.stdout)