Python重定向LSF命令的输出

Python重定向LSF命令的输出,python,lsf,Python,Lsf,我试图在使用子流程的python代码中运行LSF命令“bjobs”,但无法将输出转换为变量 我已经尝试过但失败的方法如下: proc = subprocess.Popen(['bjobs'],stdout=subprocess.PIPE) print proc.stdout.read() ## Not working stdout,stderr = subprocess.Popen(['bjobs'],stdout=subprocess.PIPE).communicate() print s

我试图在使用子流程的python代码中运行LSF命令“bjobs”,但无法将输出转换为变量

我已经尝试过但失败的方法如下:

proc = subprocess.Popen(['bjobs'],stdout=subprocess.PIPE)
print proc.stdout.read() ## Not working

stdout,stderr = subprocess.Popen(['bjobs'],stdout=subprocess.PIPE).communicate()

print stdout # prints empty line
我不想将其重定向到物理文件


因此,请帮助我找到一种方法,将它们直接捕获到变量中

,正如上面的评论所指出的,“找不到未完成的工作”消息将打印到stderr:

[~]$ bjobs > /dev/null
No unfinished job found
[~]$ bjobs >& /dev/null
[~]$
如果需要所有
bjobs
输出,则应将子流程stderr重定向到stdout:

proc = subprocess.Popen(["bjobs"],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
print proc.stdout.read()

我希望在没有挂起的作业的情况下运行bjobs命令时捕获“找不到未完成的作业”消息。是否尝试打印stderr?谢谢!这对我很有帮助