面试题答案
一键面试class FileContextManager:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def __enter__(self):
try:
self.file = open(self.filename, self.mode)
return self.file
except IOError as e:
print(f"打开文件时出错: {e}")
def __exit__(self, exc_type, exc_value, traceback):
if self.file:
self.file.close()
if exc_type == IOError:
print(f"读取文件时出错: {exc_value}")
# 使用示例
with FileContextManager('test.txt', 'r') as file:
if file:
try:
content = file.read()
print(content)
except IOError as e:
print(f"读取文件时出错: {e}")
上述代码定义了一个FileContextManager
类作为上下文管理器,实现了打开和关闭文件,并在打开和读取文件过程中捕获IOError
异常并打印错误信息。使用with
语句调用该上下文管理器。