MST

星途 面试题库

面试题:Python自定义上下文管理器的基本实现

请使用Python的`__enter__`和`__exit__`方法自定义一个简单的文件上下文管理器,要求在进入上下文时打开文件,退出时关闭文件,并且能够处理文件打开失败的异常。
39.8万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试
class FileContextManager:
    def __init__(self, file_path, mode='r'):
        self.file_path = file_path
        self.mode = mode
        self.file = None

    def __enter__(self):
        try:
            self.file = open(self.file_path, self.mode)
            return self.file
        except FileNotFoundError as e:
            print(f"文件打开失败: {e}")
            return None

    def __exit__(self, exc_type, exc_val, exc_tb):
        if self.file:
            self.file.close()

你可以使用以下方式调用这个上下文管理器:

with FileContextManager('test.txt') as file:
    if file:
        content = file.read()
        print(content)