Python 需要帮助读取子流程的输出吗

Python 需要帮助读取子流程的输出吗,python,bash,subprocess,sudo,eof,Python,Bash,Subprocess,Sudo,Eof,我的python脚本(python 3.4.3)通过子流程调用bash脚本 OutPST = subprocess.check_output(cmd,shell=True) 这是可行的,但问题是,我只得到了一半的数据。我调用的子进程调用了一个不同的子进程,我猜,如果“子进程”发送EOF,我的程序认为,就是这样,并结束check_输出 有人知道如何获取所有数据吗?除非您真的需要通过stdin对处理进行细粒度的控制(或者在进程运行时执行其他操作,而不是阻止进程完成),否则您应该使用。它使捕获输出变

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

OutPST = subprocess.check_output(cmd,shell=True)
这是可行的,但问题是,我只得到了一半的数据。我调用的子进程调用了一个不同的子进程,我猜,如果“子进程”发送EOF,我的程序认为,就是这样,并结束check_输出

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

除非您真的需要通过stdin对处理进行细粒度的控制(或者在进程运行时执行其他操作,而不是阻止进程完成),否则您应该使用。它使捕获输出变得非常简单:

from subprocess import run, PIPE

result = run(cmd, stdout=PIPE, stderr=PIPE)
print(result.stdout)
print(result.stderr)
如果要合并stdout和stderr(例如,如果不进行任何重定向,您在终端中会看到它),您可以使用特殊的目的地
stdout
for
stderr

from subprocess import STDOUT

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

cmd
的值是多少?请显示可编译代码。数据的一半?您是否尝试添加
stderr=subprocess.STDOUT
以捕获错误流?