2012-08-03 3 views
9

いつものようにPythonスクリプトを実行する必要がありますが、特定の行で実行を停止して対話モードを開始したいとします。特定のスクリプト行で対話モードを開始する

つまり、私はその時点ですべての私の変数の値をチェックし、そこからpythonのコマンドラインで自分自身を続けたいと思っています。

どうすればいいですか?

+0

A.k.aデバッグモード? –

+0

デバッグモードが上記のとおりであれば、はい! –

+0

あなたのコードをデバッグしようとしている限り、答えのメソッドはあなたが行くべき方法です。スクリプトの開発者ではなく、ユーザーとしてこの種の機能が実際に必要な場合は、スクリプトの実行中にユーザー入力を受け取り、コードを関数、メソッド、およびモジュールに再編成する方法を検討する必要があります。 –

答えて

16

codeモジュールでこれを行うことができます。最も簡単な方法はcode.interact()です。

+0

本当ですか?それはPythonシェルを開くように見えます。それだけです。コード内で 'code.interact()'の前に定義した変数は参照できませんので、この関数の使い方は実際には分かりません。 –

+3

@Ricky 'local'引数を使う必要があります:' code.interact(local = locals()) '。 –

+1

@lazyr実際には、 'code.interact(local = locals())'です:-) – sloth

9

デバッガを使用してブレークポイントを追加します。 IDEを使用していますか?すべての主要なIDEはデバッガをサポートしています。 CLIでは、pdbを使用できます。

+4

'import pdb; pdb.set_trace() 'がそのトリックを行います。 –

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