2012-08-03 137 views
9

我需要像往常一樣運行我的Python腳本,但我想停止在特定行上執行並啓動交互模式。在特定的腳本行上啓動交互模式

換句話說,我希望能夠檢查當時所有變量的值,並從python的命令行繼續我自己的操作。

我該怎麼做?

+0

A.k.a調試模式? – 2012-08-03 13:17:13

+0

如果調試模式是我上面描述的,那麼是的! – 2012-08-03 13:19:30

+0

只要你試圖調試你的代碼,答案中的方法就是你應該去的方式。如果實際上需要這種功能作爲用戶而不是腳本開發人員,則應該考慮在腳本執行過程中接受用戶輸入的方式,或者將代碼重新組織到函數,方法和模塊中。 – 2012-08-03 13:25:27

回答

16

這可以通過code模塊完成。最簡單的方法是致電code.interact()

+0

你確定嗎?它只是看起來像打開一個python shell,就是這樣。我無法在代碼中查找'code.interact()'之前定義的任何變量,所以我真的不知道如何使用此函數。 – 2012-08-03 13:25:15

+3

@Ricky你必須使用'local'參數:'code.interact(local = locals())'。 – 2012-08-03 13:26:54

+1

@lazyr實際上,它是'code.interact(local = locals())':-) – sloth 2012-08-03 13:28:59

9

使用調試器並添加斷點。你使用IDE嗎?所有主要的IDE都有調試器支持。在CLI中,您可以使用pdb

+4

'import pdb; pdb.set_trace()'會做到這一點。 – 2012-08-03 13:19:37

4

你正在尋找不完全是,但你可以很容易地讓你的程序中加入此行打破了以PDB(Python的調試器),無論你想你的程序打出來:

import pdb; pdb.set_trace() 

你然後可以很容易地檢查變量是這樣的:

p variable_name 

您也可以一步到位,繼續PDB here

更多細節。

2

除非你需要這個用於生產目的的最佳方式,在我看來,是使用交互式調試器:

http://infohost.nmt.edu/tcc/help/pubs/python/web/pdb.html

http://onlamp.com/pub/a/python/2005/09/01/debugger.html

用於其他目的考慮,也許這樣做對你的代碼方面,使用裝飾器從方法類獲取運行時特徵:

http://www.cs.tut.fi/~ask/aspects/index.shtml

http://www.linuxtopia.org/online_books/programming_books/python_programming/python_ch26.html

相關問題