2

我正在尝试使用子进程在 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

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

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

4

1 回答 1

1

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

[~]$ bjobs > /dev/null
No unfinished job found
[~]$ bjobs >& /dev/null
[~]$

如果您想要所有bjobs输出,您应该将子进程 stderr 重定向到标准输出:

proc = subprocess.Popen(["bjobs"],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
print proc.stdout.read()
于 2015-04-17T10:36:07.757 回答