我在Python3.2.3中有以下脚本:
try:
file = open('file.txt', 'r')
except IOError:
print('There was an error opening the file!')
sys.exit()
#more code that is relevant only if the file exists
如果文件不存在(或者只是打开时出错),如何优雅地退出?
我可以使用exit()
,但这将打开一个对话框面板,询问是否要终止应用程序。
我可以使用sys.exit()
,但这会引发一个SystemExit异常,它在输出中看起来不太好。我明白了
Traceback (most recent call last):
File "file", line 19, in <module>
sys.exit() SystemExit
我可以使用os.exit()
,但这会在C级别杀死Python,而无需执行任何清理。
我可以使用布尔变量并将所有后续代码包装在if。。。但那很难看,而且这不是我唯一的检查。所以我想要六个嵌套的ifs。。。
我只想打印“有个错误…”然后退出。我在闲着工作。
使用sys.exit()是可以的。如果您关心输出,那么可以在错误处理部分中添加额外的try/except块来捕获SystemExit并阻止它被定向到控制台输出。
这是一种非常优雅的方法。SystemExit回溯不会在空闲之外打印。也可以使用
sys.exit(1)
向shell指示脚本因错误而终止。或者,您可以在“main”函数中执行此操作,并使用
return
终止应用程序:这里,应用程序的主执行代码被封装在一个名为“main”的函数中,然后仅当脚本由Python解释器直接执行,或者换句话说,如果脚本由另一个脚本导入,则执行。(如果直接从命令行执行脚本,则
__name__
变量设置为“main”。否则将设置为模块的名称。)这样做的好处是将所有脚本执行逻辑收集到一个函数中,使脚本更干净,并使您能够像在大多数编译语言中一样,使用
return
语句干净地退出脚本。相关问题 更多 >
编程相关推荐