2011-07-15 48 views
1

我正在使用os.popen(cmd)通过isql连接到数据库。这是在Unix,Python版本2.3.4。我试图实现错误处理,而且,我不知道是否有 捕捉由被称为子流程,如本次募集错误/异常的有效方式,无需处理标准错误等Python - 捕获子进程异常

感谢,

+0

这是'isql'程序是一个Python脚本,它的输出可以控制吗? –

+0

没有它在unix上的可执行程序 – Dan

+0

http://infocenter.sybase.com/help/index.jsp?topic=/com.sybase.help.ase_15.0.utility/html/utility/utility210.htm – Dan

回答

0

号所有你得到的是从popen

  • 子进程,当你pclose进程的退出代码返回

    • 无论过来的管道。
  • 2

    如果您按以下方式使用子进程,你应该能够做到像这样

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

    这将使您返回stdout和错误。如果stderr包含任何内容,则执行错误处理,如果为空则不做任何事

    Goodluck!

    编辑:我刚刚读过你不想处理stderr,我真的认为你应该使用子处理,它处理所有的东西整齐地为你,希望这会让事情变得更容易管理。

    +0

    嗨谢谢,不幸的是我卡住了使用python 2.3,其中不包括子进程模块。我可以使用os.popen3来获得stderr,但是解析所有可能出现的各种错误消息对我而言并不太实际。 – Dan