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()
我正在尝试 运行 一个 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()