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 语句执行完成以后自动调用关闭文件操作,即使出现异常也会自动调用关闭文件操作。