Python - 捕获子进程异常

1 投票
2 回答
3234 浏览
提问于 2025-04-16 21:37

我正在使用 os.popen(cmd) 来连接一个数据库,使用的是 isql。这是在 Unix 系统上,Python 版本是 2.3.4。我想实现错误处理,想知道有没有什么有效的方法可以捕捉到调用的子进程(比如这个)的错误或异常,而不需要处理 stderr 等等。

谢谢,
Dan

2 个回答

2

如果你是这样使用 subprocess 的话,你可以这样做:

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

这样做可以让你获取标准输出和错误信息。如果错误信息(stderr)里有内容,就处理错误;如果没有内容,就不需要做任何事情。

祝你好运!

补充:我刚看到你说你不想处理错误信息,我真的觉得你应该使用 subprocess,因为它可以帮你把所有事情处理得很整齐,希望这样能让管理变得更简单。

0

不,您得到的只是:

  • popen 返回的所有内容
  • 当您使用 pclose 关闭进程时,子进程的退出代码。

撰写回答