python中的subprocess.call退出代码

时间:2015-09-01 05:03:43

标签: python python-2.7 jar subprocess

我有一个用例,我通过python子进程执行java jar。如何通过一些异常来了解子进程是成功完成还是终止。 Subprocess确实返回退出代码,但jar不处理返回适当的退出代码。 还有其他方法可以做到这一点吗?

class Test(object):
     #constructor
     .
     .
     def execute(self):
         exit_code = subprocess.call(['jar_path'])
         if not exit_code:
             return True
         else:
             return False

1 个答案:

答案 0 :(得分:2)

因为你说 -

  

问题:jar是否报告了stdout或stderr的正确异常?

     

答:是的,它支持。

您可以使用subprocess.Popen()以及.communicate()subprocess.PIPEstdout / stderr获取数据并进行适当解析以确定是否有任何数据异常。

示例 -

 def execute(self):
     proc = subprocess.Popen(['jar_path'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
     pout,perr = proc.communicate()
     if not perr:  #or however you want to check stderr/stdout
         return True
     else:
         return False