我已经在Python 3.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()
但杀死的Python的C水平,没有任何清理我可能会被执行。
我可以用一个布尔变量和包装所有后续的代码,如果...但是,这是丑陋的,这不是我执行的唯一检查。 所以,我会像6个嵌套IFS ...
我只是想打印的“有一个错误......”并退出。 我在空闲的工作。
这是做一个非常优雅的方式。 该SystemExit回溯不会IDLE以外打印。 您也可以选择使用sys.exit(1)
以指示脚本一个误差终止外壳。
另外,您可以在您的“主要”功能和使用做到这一点return
,终止应用程序:
def main():
try:
file = open('file.txt', 'r')
except IOError:
print('There was an error opening the file!')
return
# More code...
if __name__ == '__main__':
main()
这里的应用程序的主要执行代码被封装在称为“主”的单一功能,则如果脚本由Python解释直接执行,或者换句话说, 才执行,如果脚本它没有被其它脚本导入。 (该__name__
变量被设置为“__main__”,如果正在从直接从命令行执行的脚本,否则将被设置到该模块的名称)。
这有收集所有的脚本执行逻辑到一个单一的功能,使你的脚本更清洁的优势,使您可以使用完全退出你的脚本return
的语句,就像在大多数编译语言。
使用sys.exit()的罚款。 如果您是关注的输出,你可以随时错误处理部分中添加一个额外的try / except块赶上SystemExit和被引导到控制台输出停止。
try:
file = open('file.txt', 'r')
except IOError:
try:
print('There was an error opening the file!')
sys.exit()
except SystemExit:
#some code here that won't impact on anything