2017-05-26 30 views
1

我運行一個腳本到ipython(1.2.1),我需要它停止,如果不符合某些條件。我試圖使用exit()語句,但它的行爲並不像預期的那樣。ipython:退出()語句不按預期工作

就拿下面的腳本我把它叫做test.py

if(True): 
    print('Error') 
    exit() 
print('Still here!') 

當我運行它使用python test.py,我得到:

$python test.py 
Error 

然後執行結束,符合市場預期。

但是,如果我從IPython中使用run -i test.py運行它,然後我得到:

In [1]: run -i test.py 
Error 
Still here! 

最後IPython中的執行被終止。問題在於,在這種情況下,第二個打印語句仍然執行,而遇到exit()語句時我需要執行腳本。

爲什麼會發生這種情況,我如何獲得我想要的結果? (我正在運行python 2.7.6)

+1

'進口SYS的; sys.exit(0)' –

+3

我不知道ipython,但給'sys.exit()'一試。當然如果你還沒有這樣做,你還需要'import sys'。簡單的'exit()'函數有點奇怪:它被設計爲在標準Python交互式解釋器中使用的方便,但在其他上下文中使用它通常不是一個好主意。 –

+0

更新到ipython 5 –

回答

2

exit()單獨是爲了REPL,並非真的意味着腳本使用。

嘗試使用sys.exit(0)後您import sys,當然

+0

在交互式Ipython會話中,REPL捕獲'sys.exit'。在測試'argparse'的例子時,我總是依賴這一點。 – hpaulj