ArcMap에서 자체 종료 Python 스크립트?


17

시도 sys.exit했지만 ArcMap 10에서는 작동하지 않는 것 같습니다.

그것을하는 방법을 아는 사람이 있습니까?

답변:


16

에서 ArcPy 예 처럼 보인다 sys.exit()초기 스크립트를 종료하는 올바른 방법입니다.

파이썬 문서의 노트가 sys.exit():

은 SystemExit 예외를 발생시켜 구현되므로 try 문의 finally 절로 지정된 정리 조치가 적용되며 외부 시도에서 종료 시도를 가로 챌 수 있습니다.

이를 처리하는 쉬운 방법은 스크립트를 예외 처리기에서 래핑하는 것입니다.

import sys
import arcpy

try:
    #do stuff
    sys.exit(0)
except SystemExit:
    pass

그러나 이는 특히 우아하지 않으며 다른 수준의 들여 쓰기는 말할 것도없고 전체 프로젝트를 재구성해야합니다. 또한 코드의 다른 부분에서 SystemExit예외를 발생시킬 가능성이 거의없는 상황에서 알 수없는 예외입니다.

import sys
import arcpy

def finish(arg=None):
    try:
        sys.exit(arg)
    except SystemExit:
        pass

#do stuff
finish()

이제 당신이 호출 할 수 있습니다 finish(), finish(1)또는 finish('Error message')당신이 sys.exit를 호출 할 수있을 것으로 예상처럼 ().

물론, 우리는 다른 상황에서 예외를 먹는 접근법을 사용하고 싶을 수도 있는데, 이것이 파이썬이기 때문에 유용한 다목적 데코레이터를 일반화하고 만들 수 있습니다.

import sys
import arcpy

def eat_exception(fn, exception):
    def safe(*v, **k):
        try:
            fn(*v, **k)
        except exception:
            pass
    return safe

finish = eat_exception(sys.exit, SystemExit)

#do stuff
finish()
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.