with 上下文管理器

发布时间 2023-10-19 20:34:51作者: 七落安歌

with 上下文管理器

文件读取三步骤

# 读或写方式打开文件
f = open('python.txt','w') 
# 读或写文件
f.write('hello python')
# 关闭文件
f.close()
  • 文件使用完之后,必须关闭文件。因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件的数量也是有限的

使用try...except...else...finally能达到不管文件打开是否出错都可以关闭文件的效果,但是代码比较冗长。

try:
    # 1、以读的方式打开文件
    f = open("1.txt", "r")
    # 2、读取文件内容
    f.write("xxxxx")

except IOError as e:
    print("文件操作出错", e)

finally:
    # 3、关闭文件
    f.close()

with 语句也称为上下文管理器

上文管理器中 使用 __enter__() 魔术方法 调用了open函数

f = open('python.txt','w')

下文管理器 使用__exit__() 魔术方法 调用了close函数

f.close()

在with语句中,不管中间的代码是否出现异常,最后都会执行close()函数,关闭文件避免系统资源的浪费

with open('python.txt','w') as f:
    f.write('hello python!')
  • Python提供了with 语句的这种写法,既简单又安全,并且 with 语句执行完成以后自动调用关闭文件操作,即使出现异常也会自动调用关闭文件操作