Pythonを使用した終了スクリプト


11

私が取り組んでいるArcGIS用のPythonスクリプトがあります。必要なデータが利用できない場合は、スクリプトを終了したいのですが。sys.exit()をまっすぐ試しましたが、ArcMapで例外が発生するため、回避したいと思います。tryブロックの使用を提案するこのスレッドを見つけたので、この関数を作成しました。

def quit_script(message):
log_msg(message) # already defined; writes a message to a file
if log_loc:
    output.close() # close the file used with log_msg()
try:
    sys.exit()
except SystemExit:
    pass

残念ながら、それもうまくいきませんでした。ええ、ArcMapでそのエラーは発生しませんが、終了することもありません。現在、if / elseステートメントにコードの大部分が含まれていますが、それは見苦しいです。誰か他の提案がありますか?

ありがとう!ブライアン


理論的には、sys.exit(0)は正常に終了した操作です-msdn.microsoft.com/en-us/library/ms681381.aspxを参照してください -しかし、Michaelのように私はArcGISの近くにいないので、どのようになっているのかわかりません処理されます。
om_henners

systemexitを上げようとしましたか?私は、ワークスペース内の機能のリストを取得しようとするifステートメントでこのアプローチを使用するPythonプログラムを作成し、空のリストを返す場合、else呼び出しはsystemexitを呼び出します(うまく機能します-私はたくさんあります)ログファイルの出力と印刷も行われるため、プログラムが終了した理由を確認できます)。おそらくこれを行うための複数の方法と、おそらくもっと良い方法がありますが、これは私が期待していた/望んでいたことをします。
turkishgold

4
あなたはこのGSEスレッドに例を見ました gis.stackexchange.com/questions/1015/...

回答:


2

いいえ、必要なtry / exceptブロックでは、exitコールを取得する「catch」が必要です。あなたの試みでは、次のようなことをします:

try:
    if arcpy.Exists(parcelOutput):
    arcpy.AddMessage("Calculating Parcel Numbers")    
except:
    raise sys.exit("Error: " + arcpy.GetMessages(x))

これは、「if」ステートメントが失敗した場合にファイルされます。


キャッチするエラーがある場合にのみ実行する以外は考えましたか?
クリスステイテ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.