使用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 2011年

您是否尝试过提高systemexit?我有一个python程序,我在其中编写了一个if语句中的这种方法,它试图获取工作空间中的功能列表,如果返回空列表,则else调用提高systemexit(效果很好-我确实有很多日志文件输出和打印也在进行中,所以我可以知道为什么退出该程序。可能有多种方法可以做到这一点,甚至可能有更好的方法,但是这种方法可以实现我期望/想要的方法。
turkishgold

Answers:


2

不,您想要的try / except块会让您获得“ catch”退出电话;因此,在尝试时,您将执行以下操作:

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

如果您的'if'语句失败,此文件将归档。


我以为只有在出现错误时才能运行?
克里斯·斯蒂特
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.