
使用with后,无论with中的代码有什么错误,都会清理当前对象。
例如,file的file.close()方法,无论with中出现什么错误,都会执行file.close()方法
我们知道如何使用try-except-finally语句可以处理异常。接下来,我们将介绍使用with语句处理与异常相关的工作
with语句支持创建资源、抛出异常、释放资源等操作,代码简单。
with句子格式
with 上下文表达式 [as 资源对象]: 对象操作 说明:
上下文表达式,返回上下文管理对象
若指定as语句,则该对象不赋予as语句中的资源对象价值,而是将上下文管理器的__enter__()方法的返回值给资源对象赋值。
资源对象可以是单变量或元组。
使用with语句操作文件对象
withopen("/test.txt")asfile:
foralineinfile:
print(aline)解释说明: 该代码使用with语句打开文件。如果沿途打开,将文件对象赋值给file,然后用for语句遍历打印文件的每一行。当文件操作时
with语句完成后关闭文件。如果代码运行过程中出现异常,with也会关闭文件。
使用finally语句实现这一代码如下:
try:
file=open("/test.txt")
try:
foralineinfile:
print(aline)
exceptExceptionaserror:
print(error)
finally:
file.close()
exceptFileNotFoundErroraserr:
print(err)我们还可以在with语句中添加异常处理:
try:
withopen("/test.txt")asfile:
foralineinfile:
print(aline)
exceptExceptionaserror:
print(error)通过对比可以发现,在异常处理with语句时,代码要简单得多.
更多技术请关注Python视频教程。