使用with后,无论with中的代码出现什么错误,当前对象都会被清理掉。
比如file的file.close()方法,不管with有什么错误,都会执行file.close()方法
我们知道使用try-except-finally语句可以处理异常,接下来介绍使用with语句处理异常相关的工作
with语句支持创建资源、抛出异常、释放资源等操作,代码简洁。
with语句格式
with 上下文表达式 [as 资源对象]: 对象操作 说明:
上下文表达式,返回一个上下文管理对象
如果指定了as语句,则对象不会赋值给as子句中的资源对象,而是将上下文管理器的__enter__()方法的返回值赋值给资源对象。
资源对象可以是单变量,也可以是元组。
使用with语句操作文件对象
with open("/test.txt") as file:
for aline in file:
print(aline)
说明:此代码使用 with 语句打开文件。如果是顺便打开,将file对象赋值给file,然后用for语句遍历打印文件的每一行。文件操作时
操作完成后,with语句关闭文件。如果在这段代码执行过程中发生异常,with 也会关闭文件。
这段代码使用finally语句实现如下:
try:
file = open("/test.txt")
try:
for aline in file:
print(aline)
except Exception as error:
print(error)
finally:
file.close()
except FileNotFoundError as err:
print(err)
我们也可以给with语句加上异常处理:
try:
with open("/test.txt") as file:
for aline in file:
print(aline)
except Exception as error:
print(error)
通过对比可以发现,with语句的代码在处理异常的时候要简单很多。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python判断一个字符串是否包含另一个字符串08/13
- ♥ 如何在 python 中使用 socket 构建服务器12/25
- ♥ python中os.walk方法详解遍历目录操作12/23
- ♥ Python是如何把数字变成中文的?09/16
- ♥ python如何定义列表08/13
- ♥ Python中for循环的动态范围12/28
内容反馈