2013-07-12 145 views
1

我有在bash中運行命令的代碼(每個bash命令運行一個函數python腳本),我希望檢查腳本是否成功運行,因爲在那裏有任何錯誤。這裏是代碼:檢查腳本是否成功運行?

for command in command_list: 
     if subprocess_cmd(command): 
      print "success" 
     else: 
      print "fail" 

def subprocess_cmd(command): 
    process = subprocess.Popen(command.split(), stdout=subprocess.PIPE) 
    proc_stdout = process.communicate()[0].strip() 

這總是打印失敗,即使一切運行良好,是我在做什麼是有道理的? 我該怎麼做?

編輯:答案是popen的returncode屬性。

回答

1

這是因爲你的功能subprocess_cmm沒有返回任何東西,所以默認None返回這是一個Falsy值。

函數的默認返回值始終爲None

>>> def func(): 
...  pass 
>>> print func() 
None 

更新:

import shlex 
for command in command_list: 
    try: 
     out = subprocess.check_output(shlex.split(command)) 
     print out 
    except CalledProcessError: 
     print "fail" 
+0

謝謝,我怎麼測試bash命令被調用python腳本的返回值? – Paul

+0

@Paul如果你只想輸出,那麼使用'subprocess.check_output'。 –

+0

我只是想檢查它是否成功,基本上是否爲0。我會看看子進程命令謝謝,現在我知道該怎麼做了。 – Paul

相關問題