Python - 捕获子流程异常

时间:2011-07-15 15:19:00

标签: python

我正在使用os.popen(cmd)连接到带有isql的数据库。这是在Unix,Python版本2.3.4。我正在尝试实现错误处理,我想知道是否有 一种有效的方法来捕获由此类调用的子进程引发的错误/异常,而无需处理stderr等。

谢谢,

2 个答案:

答案 0 :(得分:2)

如果您以下列方式使用子进程,则应该能够像这样执行

sql_stdout_stderr = subprocess.Popen(sql_command, stdout=subprocess.PIPE)
#communicate returns a tuple
stdout, stderr = sql_stdout_stderr.communicate()

这将允许您返回标准输出和错误。如果stderr包含任何错误处理,如果空无效。

古德勒克!

编辑:我刚刚读到你不想处理stderr,我真的认为你应该使用subprocess来处理所有事情,希望能让你更容易管理。

答案 1 :(得分:0)

没有。你得到的只是

  • 来自popen
  • 返回的管道的任何内容
  • 当您pclose进程时子进程的退出代码。