スクリプトを実行しているときに、トレースバックを吐いた後でコンソールウィンドウを閉じるのを止める方法はありますか?Pythonの終了時にエラーが発生するのを防ぐ
答えて
、あなたがあなたのショートカットのターゲットを前に付けることができますコマンドが終了したときにウィンドウが閉じなくなります。 UNIXシステムでは
あなたの質問はあまり明確ではありませんが、例外が発生した場合、Pythonインタプリタが終了する(したがって呼び出し元のコンソールウィンドウが閉じます)と仮定します。
例外をキャッチしてインタプリタを終了することなくそれを印刷するには、Pythonアプリケーションを修正する必要があります。これを行う1つの方法は、「Enterを押して終了」を印刷して、コンソールウィンドウから入力を読み取って、ユーザーがEnterキーを押すのを待つことです。
try:
#do some stuff
1/0 #stuff that generated the exception
except Exception as ex:
print ex
raw_input()
を行うことができます( 'traceback.print_excを使用する場合があります)'代わりにそれらのために、より詳細なスタックトレース –
メインコードをインポート/実行する2番目のスクリプトを作成できます。このスクリプトは、あなたのコードがif __name__ == "__main__": main()
イディオムを使用して構成されていると仮定すると、(その後、終了する前にユーザーの入力を待つ)
をすべての例外をキャッチし、トレースバックを印刷します。..
def myfunction():
pass
class Myclass():
pass
def main():
c = Myclass()
myfunction(c)
if __name__ == "__main__":
main()
は、「ファイルの名前は..and myscriptname.py」(明らかにそれを変更することができます)、以下は
from myscriptname import main as myscript_main
try:
myscript_main()
except Exception, errormsg:
print "Script errored!"
print "Error message: %s" % errormsg
print "Traceback:"
import traceback
traceback.print_exc()
print "Press return to exit.."
raw_input()
(raw_input()
がPython 3にinput()
に置き換えられていることに注意してください)
あなたがmain()
機能を持っていない場合、あなたはtry:
ブロックにimport文を入れて使用します。
try:
import myscriptname
except [...]
余分なラッパー・スクリプトを必要としない、よりよい解決策、1は、スクリプトを実行することですIDLEまたはコマンドラインから入力してください。
Windowsの場合、[スタート]> [ファイル名を指定して実行]に移動し、cmd
と入力して入力します。 Linuxの/ MacのOS X上
それは少し簡単です(あなたがC:\Python\
へのPythonをインストールした場合)すると...のような
cd "\Path\To Your\ Script\"
\Python\bin\python.exe myscriptname.py
を何かを入力して、あなたはちょうどそのpython myscriptname.py
最も簡単な方法は、希望cd /home/your/script/
を実行しますIDLEを使用し、IDLEを起動し、スクリプトを開いて実行ボタン(F5
またはCtrl+F5
と思う)をクリックします。スクリプトが終了すると、ウィンドウは自動的に閉じられないため、エラーが表示されます。
また、Chris Thornhillとして、Windowsではスクリプトのショートカットを作成することができます。http://www.computerhope.com/cmd.htmから
C:\WINDOWS\system32\cmd.exe /K [existing command]
:これは防ぐことができます
C:\WINDOWS\system32\cmd.exe /K <command>
:あなたは、Windows OS上でこれを行う場合は
/K command - Executes the specified command and continues running.
(Windowsは、既に上記カバーされている...)あなたは-iフラグを含めるために、インタプリタ引数を変更することができます!
ます。#/ usr/bin/pythonの-i
からmanページ:
-i
スクリプトは、最初の引数として渡されるか、-cオプションを使用すると、スクリプトやコマンドを実行した後、対話型モードに入ります。 $ PYTHONSTARTUPファイルは読み込まれません。これは、スクリプトが例外を発生させたときにグローバル変数やスタックトレースを検査するのに便利です。
:
def show_exception_and_exit(exc_type, exc_value, tb):
import traceback
traceback.print_exception(exc_type, exc_value, tb)
raw_input("Press key to exit.")
sys.exit(-1)
import sys
sys.excepthook = show_exception_and_exit
あなたがCから呼び出されるイベントハンドラ内でoccuring例外を持っている場合、これは特に便利ですこれはしばしばエラーを伝播しません。
+1これは、インポート中に例外が発生した場合でも、ファイル全体を再インデントしなくても動作します。また、* ShellExecuteExなどのバッチファイルから*実行していないときにも機能します。 –
大変ありがとうございます。 –
しかし、それらの 'exc_type、exc_value、tb'引数は何ですか? (私はPython 3.6を使用しています) –
pyファイルをダブルクリックする代わりに、すでに開いているCMDウィンドウにドラッグしてEnterキーを押します。例外の後は開いたままです。
ダン
Windowsを使用している場合は、この
import os
#code here
os.system('pause')
- 1. linuxがプログラム終了時にファイルディスクリプタを閉じるのを防ぐ
- 2. Pythonカーネル終了時の多重処理ゾンビを防ぐ方法
- 3. ASP.net WPがエラーで終了するのを防ぐ方法
- 4. whileループの終了時にエラーが発生する
- 5. 終了時にモーダルフォームがすべてのモードレスオープンフォームを閉じるのを防ぐ
- 6. Python Turtle - 終了時のクラッシュを防ぐことは可能ですか?
- 7. エラーが発生した場合に強制終了を防止する
- 8. 例外処理後にプログラムが終了するのを防ぐ
- 9. シーン終了時にフローパネルが折り返されるのを防ぐ方法(
- 10. 長期実行バックアップジョブが終了するのを防ぐ方法
- 11. golang - 終了からアプリケーションを防ぐ
- 12. AsyncTaskでProgressDialogを終了する際にエラーが発生する
- 13. Google Scholarを削るときに503エラーが発生するのを防ぐ
- 14. NodeJSがイベント発生時にコールバックを終了する
- 15. フォームのアクションがasp.netで発生するのを防ぐには
- 16. Windows - エラーが発生したときにコンソールウィンドウが閉じるのを防ぐ
- 17. 終了時のエラー
- 18. モーダルUIViewControllerを終了するとEXC_BAD_ACCESSエラーが発生する
- 19. PyQTアプリケーションを終了するとセグメント化エラーが発生する
- 20. Pythonでシグナルが出ると終了コード139が発生する
- 21. アプリケーションの終了時にアクセス違反が発生しました
- 22. NodeJS:エラー時にアプリケーションがクラッシュするのを防ぐ
- 23. jQuery append()で自動タグの終了を防ぐには?
- 24. 最終更新日の変換時にエラーが発生する
- 25. MFC/COM:アプリケーションが終了するとクリップボードが消去されるのを防ぐ
- 26. 起動時にDocker Containerがすぐに終了する
- 27. Jenkinsスレーブでエラーが発生しWaitForQualityGateが終了する
- 28. MS Accessアプリケーションの終了中にエラーが発生しました
- 29. VueJS:検証時のエラーを防ぐ
- 30. コンソールアプリケーションの終了を防ぐ方法はありますか?
のための '印刷ex'のバッチファイルを使用しています:私のバッチファイルには、Pythonを起動してProjectsモジュールを自動的にインポートするための 'python -m Projects'という行が含まれていました。これを 'cmd/K python -m Projects'に変更しました。これは宣伝されているように動作し、エラー後にcmdコンソールが開いたままになりました。 –