我的python脚本(python 3.4.3)通过子进程调用bash脚本。
OutPST = subprocess.check_output(cmd,shell=True)
它有效,但问题是,我只获得了一半的数据。我调用的子进程调用一个不同的子进程,我猜测,如果“子子进程”发送EOF,我的程序认为,就是它并结束check_output。
有人知道如何获取所有数据吗?
答案 0 :(得分:1)
你应该使用subprocess.run()
,除非你真的需要对通过stdin与处理进行交谈的精细控制(或者在进程运行时做其他事情而不是阻止它完成)。它使捕获输出变得非常容易:
STDOUT
如果你想合并stdout和stderr(就像你没有在你的终端中看到它,如果你没有进行任何重定向),你可以使用特殊目的地stderr
进行{{ 1}}:
from subprocess import STDOUT
result = run(cmd, stdout=PIPE, stderr=STDOUT)
print(result.stdout)