質問

ある条件下で早期に終了したいスクリプトがあります。

if not "id" in dir():
     print "id not set, cannot continue"
     # exit here!
# otherwise continue with the rest of the script...
print "alright..."
[ more code ]

このスクリプトを使用して実行します execfile("foo.py") Python インタラクティブ プロンプトからスクリプトを終了し、インタラクティブ インタプリタに戻りたいと考えています。どうすればいいでしょうか?私が使うなら sys.exit(), 、Python インタープリターは完全に終了します。

役に立ちましたか?

解決

などのように、そのメソッドからメソッドと引き換えに、あなたのコードブロックを置きます

def do_the_thing():
    if not "id" in dir():
         print "id not set, cannot continue"
         return
         # exit here!
    # otherwise continue with the rest of the script...
    print "alright..."
    # [ more code ]

# Call the method
do_the_thing()

また、(execfileを使用するには十分な理由がない限り)、この方法は、おそらくそれは、それをインポートして、別のPythonスクリプトから呼び出すことができるモジュールに配置する必要があります

import mymodule
mymodule.do_the_thing()

他のヒント

対話型インタプリタは

。キャッチSystemExitsys.exitによって上昇し、それを無視します:

try:
    execfile("mymodule.py")
except SystemExit:
    pass

私はインタラクティブな作業のために ipython に少し夢中になっていますが、次のチュートリアルをチェックしてください。 シェルの埋め込み より堅牢なソリューションの場合 これです (これが最も直接的なルートです)。

execfile を使用する代わりに、スクリプトをインポート可能にする必要があります (名前=='主要 保護、関数への分離など)、インタプリタから関数を呼び出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top