python定义清理行为
来源:互联网 发布:爱淘宝一元红包链接 编辑:程序博客网 时间:2024/06/15 09:53
1、try 语句还有另外一个可选的子句,它定义了无论在任何情况下都会执行的清理行为。 例如:
>>>try:
raiseKeyboardInterrupt
finally:
print('Goodbye, world!')
Goodbye, world!
Traceback(most recent call last):
File"<pyshell#71>", line 2,in<module>
raiseKeyboardInterrupt
KeyboardInterrupt
以上例子不管try子句里面有没有发生异常,finally子句都会执行。
2、如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出。
下面是一个更加复杂的例子(在同一个 try 语句里包含 except 和 finally 子句):
>>>def divide(x, y):
try:
result = x / y
exceptZeroDivisionError:
print("division by zero!")
else:
print("result is", result)
finally:
print("executing finally clause")
>>> divide(2,1)
result is2.0
executing finally clause
>>> divide(2,0)
division by zero!
executing finally clause
>>> divide("2","1")
executing finally clause
Traceback(most recent call last):
File"<pyshell#91>", line 1,in<module>
divide("2","1")
File"<pyshell#88>", line 3,in divide
3、预定义的清理行为
一些对象定义了标准的清理行为,无论系统是否成功的使用了它,一旦不需要它了,那么这个标准的清理行为就会执行。
这面这个例子展示了尝试打开一个文件,然后把内容打印到屏幕上:
>>>for line in open("myfile.txt"):
print(line, end="")
Traceback(most recent call last):
File"<pyshell#94>", line 1,in<module>
for line in open("myfile.txt"):
FileNotFoundError:[Errno2]No such file or directory:'myfile.txt'
以上这段代码的问题是,当执行完毕后,文件会保持打开状态,并没有被关闭。
关键词 with 语句就可以保证诸如文件之类的对象在使用完之后一定会正确的执行他的清理方法:
>>>with open("myfile.txt")as f:
for line in f:
print(line, end="")
Traceback(most recent call last):
File"<pyshell#98>", line 1,in<module>
with open("myfile.txt")as f:
FileNotFoundError:[Errno2]No such file or directory:'myfile.txt'
以上这段代码执行完毕后,就算在处理过程中出问题了,文件 f 总是会关闭。
阅读全文
0 0
- python定义清理行为
- 定义组件行为的方式
- python实例31[文件夹清理]
- python+数据过滤、清理、转换
- python 定义
- C #define 行为未知的重定义
- Python:mechanize模拟浏览器行为
- Python:mechanize模拟浏览器行为
- 清理SVN信息的Python脚本
- 调用python脚本清理xp系统临时文件
- python监控日志并予以清理
- python 数据清理诺干错误
- python实现清理桌面的功能
- python 定时清理django 过期 session
- 定时清理日志文件-python实现
- 清理
- 清理
- 清理
- 一个质量cmmi0级的产品。从face到hold
- JSESSIONID的简单说明
- python异常处理
- 天气预报API接口
- python自定义异常
- python定义清理行为
- python的pdb调试命令
- ThreadLocal的学习
- 图文详解AO打印(端桥模式)
- pdb调试Python脚本
- angular4 安装@angular/animations等问题
- android studio bao'cuo:DELETE_FAILED_INTERNAL_ERROR Error while Installing APKs
- python注册表概述
- shell命令