2017-02-14 8 views
0

私はexecを使って別のPythonスクリプトを実行しています。私は、実行されたスクリプトが正常に完了したかどうかを判断したい。 execを使用しているときに終了コードを取得するにはどうしますか?終了コードを取得する以外の方法がありますか?execの呼び出しで終了コードを取得することはできますか?

file_to_execute = sys.argv[1] 

# Want to find out if file_to_execute completed successfully 
exec(open(file_to_execute).read()) 
+1

*なし*終了コードではありません。 – user2357112

+2

これはスクリプトを実行していないため、現在のスクリプト内でPythonコードを実行しています。 *「終了コード」*は何を期待していますか?そのコードが正常に実行されない場合は、エラーが発生します。 – jonrsharpe

+0

これは、スクリプトの実行方法ではありません。 ['subprocess.run()'](https://docs.python.org/3.5/library/subprocess.html#subprocess.run)を見てください。 –

答えて

0

一つの選択肢は、子プロセスとして実行することです:実行の

import subprocess 
returncode = 0 
try: 
    subprocess.check_output(['python', file_to_execute]) 
except subprocess.CalledProcessError as e: 
    returncode = e.returncode 

あなたの現在の方法は、プロセスとして、それを実行していない、ので、何の終了コードがありません。むしろ、execは、Pythonコードを現在のファイルにあるかのように直接実行します。そこ

+0

Gotcha。私はサブプロセスを使用することはできません、私は本当の問題のためにexecを使用する必要があります。実行されたコードが例外をスローしたかどうかを判断するにはどうしますか? – user3715648

+2

実行されたコードが例外をスローした場合、現在のプロセスで例外がスローされます。 –

関連する問題