2015-04-17 94 views
2

我試圖用子進程運行LSF命令,「bjobs」一個Python代碼內,我無法得到輸出到一個變量Python的重定向從LSF命令輸出

方面我已經嘗試和失敗如下:

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

我期待着捕捉「沒有未完成的任務中發現了」消息,當您運行bjobs命令得到控制而e沒有待處理的工作。 – Krishna

+1

您是否嘗試過打印stderr? –

回答

1

用如上述評論指出的那樣,「沒有未完成的任務中發現了」的消息被打印到標準錯誤:

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

如果希望所有bjobs輸出應子標準錯誤重定向到標準輸出:

proc = subprocess.Popen(["bjobs"],stdout=subprocess.PIPE,stderr=subprocess.STDOUT) 
print proc.stdout.read() 
+0

謝謝!這幫助了我 – Krishna