我需要像往常一樣運行我的Python腳本,但我想停止在特定行上執行並啓動交互模式。在特定的腳本行上啓動交互模式
換句話說,我希望能夠檢查當時所有變量的值,並從python的命令行繼續我自己的操作。
我該怎麼做?
我需要像往常一樣運行我的Python腳本,但我想停止在特定行上執行並啓動交互模式。在特定的腳本行上啓動交互模式
換句話說,我希望能夠檢查當時所有變量的值,並從python的命令行繼續我自己的操作。
我該怎麼做?
這可以通過code
模塊完成。最簡單的方法是致電code.interact()
。
你確定嗎?它只是看起來像打開一個python shell,就是這樣。我無法在代碼中查找'code.interact()'之前定義的任何變量,所以我真的不知道如何使用此函數。 – 2012-08-03 13:25:15
@Ricky你必須使用'local'參數:'code.interact(local = locals())'。 – 2012-08-03 13:26:54
@lazyr實際上,它是'code.interact(local = locals())':-) – sloth 2012-08-03 13:28:59
使用調試器並添加斷點。你使用IDE嗎?所有主要的IDE都有調試器支持。在CLI中,您可以使用pdb
。
'import pdb; pdb.set_trace()'會做到這一點。 – 2012-08-03 13:19:37
你正在尋找不完全是,但你可以很容易地讓你的程序中加入此行打破了以PDB(Python的調試器),無論你想你的程序打出來:
import pdb; pdb.set_trace()
你然後可以很容易地檢查變量是這樣的:
p variable_name
您也可以一步到位,繼續PDB here等
更多細節。
除非你需要這個用於生產目的的最佳方式,在我看來,是使用交互式調試器:
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
A.k.a調試模式? – 2012-08-03 13:17:13
如果調試模式是我上面描述的,那麼是的! – 2012-08-03 13:19:30
只要你試圖調試你的代碼,答案中的方法就是你應該去的方式。如果實際上需要這種功能作爲用戶而不是腳本開發人員,則應該考慮在腳本執行過程中接受用戶輸入的方式,或者將代碼重新組織到函數,方法和模塊中。 – 2012-08-03 13:25:27