我正在尝试使用子进程在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
我不想将其重定向到物理文件。
所以请帮我找到一种直接将它们捕捉到变量的方法
答案 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()