Python重定向LSF命令的输出

时间:2015-04-17 08:38:57

标签: 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 stdout # prints empty line

我不想将其重定向到物理文件。

所以请帮我找到一种直接将它们捕捉到变量的方法

1 个答案:

答案 0 :(得分:1)

正如上面的评论所指出的,"没有找到未完成的工作"消息打印到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()