2011-07-15 88 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