2013-12-12 31 views
0

我已經編寫了一個python程序,它在eclipse下成功測試過。然後我用pyinstaller將它作爲一個.exe文件執行。當程序引發異常時,cmd窗口將立即退出。我想留在這個窗口仔細看看這個例外。我該怎麼做 ?謝謝。如何在引發異常時留在cmd窗口中?

+0

你可以打開終端,然後再從那裏運行您的程序? – msturdy

+0

是的,如果沒有異常發生,我可以運行我的程序。 –

回答

0

正如Turdy女士提到的,如果應用程序具有與exe相同的行爲,則應先在命令提示符或終端中運行它。

你可以用python -m pdb script.py執行一個python腳本,它將進入調試器。通過按C繼續運行它,然後在引發異常時它會中斷。

+0

謝謝你的回答。但我已經在eclipse中測試了這個程序。並且在IDE中沒問題。所以我想通過pyinstaller把它放到.exe中。我想要.exe引發異常,因爲我有爲了警告用戶,在例外情況下寫了一些意圖。但是,當拋出異常時,窗口如此迅速地關閉。 –

0

這是因爲python腳本已經完成了它的工作。你可以這樣做:

import time 

# your code 
... 

time.sleep(20) 

這會給你20秒內看到結果。 20秒後,cmd窗口將保留20秒,以便您查看結果。您可以更改您的需求時間。

+0

謝謝您的回覆。但是當程序拋出異常時會發生。我在代碼中添加了time.sleep,但效果不佳。 –

+0

@ user3093493如果程序拋出一個異常,您應該在IDLE或某些其他解釋器中運行腳本來查找原因而不是運行exe。在你確認你的代碼是正確的,然後使用pyinstaller。或者您可以記錄代碼中可能發生異常的信息。並且考慮到打包程序的步驟,因爲我在某些時候打包python腳本失敗了。 –

+0

謝謝。是的,我的程序已經在eclipse下測試過了,所以我想用pyinstaller來發布它。而且當異常提出時,會有一些警告給我寫在異常部分的用戶。問題是在窗戶關閉之前的短時間警告停留。 –

0

你可以嘗試raw_input保持屏幕:

import traceback 
try: 
    # do something dangerous 
except Exception, e: 
    print 'Error:', e 
    print traceback.format_exc() 
    raw_input('Input anything to end...')