说明
处理操作文件异常时,用 try...finally... 语句比较 繁琐,所以python中引入了 with 语句,简化代码
Python 2.5开始支持,需要引入模块
从 2.6 版本开始缺省可用
语法
with expression [as target]:
with-body
语法说明:
- expression:需要执行的表达式
- target:可选参数。如果加上
as target,target表示一个变量或者由“()”括起来的元组(必须加“()”)。存储的是expression表达式执行返回的结果。
例子
with语句处理文件对象,如下:
with open('c:/users/mym/desktop/1.txt', 'r') as f:
content=f.read()
print(content)
不管在处理文件过程中 是否发生异常,都能保证 with 语句执行完毕后 关闭文件对象
使用 with 语句可以减少编码量
总结
一般情况下,处理操作文件异常时,会使用with语句
with语句的实现原理见:python之上下文管理器
with语句抛出异常
如下面代码,在 with 语句中,读取 不存在的文件,会抛出异常,在 with 语句里面的 try...except... 是 捕获不到异常的
with open('123.txt','r') as f:
try:
print(f.read())
except Exception as e:
print('----------')
print(e)
解决
在 with 语句的外面加上 try...except... 就能捕获,如下:
try:
with open('123.txt','r') as f:
print(f.read())
except Exception as e:
print("----------------")
print(e)
原理
Python 对一些 内建对象 进行改进,加入了 上下文管理器 ,可以用于 with 语句中,比如可以 自动关闭文件 等
支持上下文管理的对象,with语句才能对其使用
http://www.malaoshi.top/show_1EF2LA0CbD0u.html