# try:
# file = open('test.txt', 'r')
# finally:
# file.close()
# 使用with关键字操作文件的时候,可以不用再考虑文件的关闭问题,会自动关闭文件
# with ... as ... 把with后面的语句执行的结果赋值给as后面的变量
with open('test.txt', 'r') as file:
print(file.read())
try:
# with语句后面的对象,必须要有 __enter__ 和 __exit__魔法方法
with open('xxx.txt', 'r') as file:
print(file.read())
except FileNotFoundError as e:
print(e)
自定义上下文管理器,定义 enter 和 __exit__魔法方法
import time
def create_context(name, age):
return MyContext(name, age)
class MyContext(object):
def __init__(self, name, age):
self.name = name
self.age = age
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("exc_type = {},exc_val = {},exc_tb = {}".format(exc_type, exc_val, exc_tb))
def test(self):
print('name={}'.format(self.name))
1 / 0
with create_context('zhangsan', 18) as m:
m.test()