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

시스템 종료를 시도 했습니까? 작업 공간의 기능 목록을 가져 와서 if 문 에서이 접근법을 사용하는 파이썬 프로그램이 있는데 빈 목록을 반환하면 else 호출은 systemexit를 발생시킵니다 (잘 작동합니다-많이 있습니다) 로그 파일 출력 및 인쇄도 진행되므로 프로그램이 종료 된 이유를 알 수 있습니다). 아마도이 작업을 수행하는 여러 가지 방법과 더 나은 방법 일 수 있지만이 방법은 내가 기대 한 / 원하는 일을합니다.
turkishgold

답변:


2

아닙니다. try / except 블록은 'catch'가 종료 호출을 받도록합니다. 그래서 당신의 시도에서 당신은 다음과 같이 할 것입니다 :

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

'if'문이 실패하면 제출합니다.


잡을 오류가있을 때만 달리기라고 생각 했습니까?
Chris Stayte
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.