Python 重定向 LSF 命令的输出

Python redirecting output from an LSF command

我正在尝试 运行 一个 LSF 命令,'bjobs' 在 python 代码中使用子进程,但我无法将输出放入变量

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

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

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

所以请帮我想办法把它们直接捕获到一个变量中

正如上面的评论所指出的,"No unfinished job found" 消息被打印到标准错误:

[~]$ 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()