python之操作文件异常处理with语句

说明

处理操作文件异常时,用 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


原文出处:/show_1EF2O9bIS8cm.html